Введение в Perl
Добавить в закладки К обложке
- От простого к сложному - Страница 1
- Запуск интерпретатора Перл - Страница 4
- Синтаксис - Страница 6
- Переменные - Страница 10
- Встроенные переменные Перл - Страница 13
- Регулярные выражения (шаблоны) - Страница 15
- Операторы и приоритеты - Страница 17
- Встроенные функции - Страница 23
- Группа системных вызовов - Страница 27
- Подпрограммы - Страница 35
- Модули (packages) - Страница 37
- Форматы - Страница 39
- Отладка Перл программ - Страница 41
- Список литературы - Страница 42
- Интернет – ссылки - Страница 43
Оператор for полностью аналогичен оператору for в С. В перед началом цикла выполняется EXPR1, если EXPR2 = true выполняется блок, затем выполняется EXPR3.
Пример:
for ($i = 2; $i < 5; ++$i)
{
print $i, " ";
}
print «\nПосле цикла i = $i\n»;
Результат:
2 3 4
После цикла i = 5
Цикл foreach.LABEL foreach VAR (LIST) BLOCK
Переменной VAR присваивается поочередно каждый элемент списка LIST и выполняется блок. Если VAR опущенно то элементы присваиваются встроеной переменной $_. Если в теле блока изменять значение VAR то это вызовет изменение и элементов списка т.к. VAR фактически указывает на текущий элемент списка.
Вместо слова foreach можно писать просто for – это слова синонимы.
Пример:
@месяц = («январь»,"февраль","март"); # Создали массив
foreach $i (@месяц)
{
print $i," "; # Печать $i
}
Результат: январь февраль март
Пример:
@месяц = («январь»,"февраль","март"); # Создали массив
foreach $i (@месяц)
{
$i = uc($i); # Перевели в верхний регистр
}
print @месяц;
Результат: ЯНВАРЬФЕВРАЛЬМАРТ
Пример:
for $i (3,5,7)
{
print "$i ";
}
Результат: 3 5 7
Блоки и оператор switch.Блок не зависимо от того имеет он метку или нет семантически представляет собой цикл который выполняется один раз. Поэтому действие опраторов цикла next, last, redo – аналогично описанному выше. Блоки удобны для построения switch (переключатель) структур.
В Перл нет специального оператора switch подобного языку С поэтому вы сами можете создавать удобные для вас конструкции.
Опыт автора показывает что для простоты написания лучше всего подходит конструкция вида if ... elsif ... else ... хотя можно сочинить и нечто подобное:
SWITCH:
{
if ($i ==1 ) { .....; last SWITCH; }
if ($i ==2 ) { .....; last SWITCH; }
if ($i ==3 ) { .....; last SWITCH; }
$default = 13;
}
Выбирайте сами по своему вкусу.
Оператор goto.В Перл существует оператор goto хотя где , как и когда его применять как говорил Ходжа Насредин «Тонкий филосовский вопрос».
Для начинающих программистов которым от так «нужен» я бы вообще посоветовал «забыть» о его существовании. Однако при создании больших производственных задач на последнем этапе особенно при отработке «отвальных» ошибочных ситуаций конечно goto нужен.
В Перл реализовано три формы goto. goto – метка, goto – выражение и goto – подпрограмма.
goto – метка выполняет непосредственный переход на указанную метку.
goto – выражение – Вычисляет имя метки и делает соответсвующий переход.
Например если мы хотим сделать переход на одну из трех меток "M1:", "M2:" или "M3:" в зависимости от значений переменной $i равной 0, 1 или 2 то это лучше сделать следующим образом:
goto («M1», «M2», «M3»)[$i];
здесь $i используется как индекс массива указанного непосредственно в выражении.