next M1 if $i < 3; # Переходим в начало если $i < 3
++$i; # иначе увеличиваем счетчик еще раз на 1
}
continue
{
print '$i '; # Печатаем $i
}
Результат: 1 2 4 6
last – подобен оператору break в языке С. Немедленно прерывает цикл. Блок continue пропускается.
Пример:
M1:
while ($i < 6)
{
++$i; # Увеличиваем счетчик на 1
last M1 if $i > 3; # Выход из цикла если $i > 3
++$i; # иначе увеличиваем счетчик еще раз на 1
}
continue {
print '$i '; # Печатаем $i
}
Результат: 2 4
redo – начать новый цикл не вычисляя
Пример:
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 « После цикла i = $i »;
Результат:
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;
}
Выбирайте сами по своему вкусу.