next - подобен continue в С. Переходит к началу текущего цикла т.е. повторяет итерацию.
Пример:
M1: while ($i < 6) { ++$i; # Увеличиваем счетчик на 1 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 - начать новый цикл не вычисляя EXPR и не выполняя continue блок.
Пример:
M1: while ($i < 6) { ++$i; # Увеличиваем счетчик на 1 redo M1 if $i == 3; # Далее пропустить для $i = 3 ++$i; # иначе увеличиваем счетчик еще раз на 1 } continue { print "$i "; # Печатаем $i }Результат: 2 5 7