M1:
while ($i < 6)
{
++$i; # Увеличиваем счетчик на 1
redo M1 if $i == 3; # Далее пропустить для $i = 3
++$i; # иначе увеличиваем счетчик еще раз на 1
}
continue {
print "$i "; # Печатаем $i
}
Результат: 2 5 7
LABEL for (
Оператор for полностью аналогичен оператору for в С. В перед началом цикла выполняется
Пример:
for ($i = 2; $i < 5; ++$i)
{
print $i, " ";
}
print «\nПосле цикла i = $i\n»;
Результат:
2 3 4
После цикла i = 5
LABEL foreach
Переменной
Вместо слова foreach можно писать просто for – это слова синонимы.
Пример:
@месяц = («январь»,"февраль","март"); # Создали массив
foreach $i (@месяц)
{
print $i," "; # Печать $i
}
Результат: январь февраль март
Пример:
@месяц = («январь»,"февраль","март"); # Создали массив
foreach $i (@месяц)
{
$i = uc($i); # Перевели в верхний регистр
}
print @месяц;
Результат: ЯНВАРЬФЕВРАЛЬМАРТ
Пример:
for $i (3,5,7)
{
print "$i ";
}
Результат: 3 5 7
Блок не зависимо от того имеет он метку или нет семантически представляет собой цикл который выполняется один раз. Поэтому действие опраторов цикла 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»)[
здесь
goto подпрограмма – довольно редкий случай т.к. всегда проще и надежней вызвать подпрограмму «естественным» образом.
В Перл реализован очень удобный механизм для написания документации в момент создания программы. Для этого применяются специальные POD операторы.
Если в теле программы интерпретатор встречает оператор начинающийся с символа '=' например:
то пропускается все до слова '
с помощью специальной программы pod можно отделить текст документации от текста программы.
Переменные
В Перл существует три типа структур данных: скаляры, массивы скаляров и хеши (hashes) – ассоциативные массивы скаляров. Обычно элементы массивов индексируются целыми числами, первый элемент – нулевой. Отрицательное значение индекса обозначает номер позиции элемента с конца. Хеши индексируются строками символов.
Имена скалярных переменных всегда начинаются с символа '$' даже когда обозначают элемент массива.
Пример:
$var1 # Простой скаляр 'var1'
$var1[0] # Первый элемент массива 'var1'