|
e выполняется
BLOCK2 иначе ... иначе BLOCK.
Пример:
$var = 1;
if ($var == 0)
{ print "\$var = 0\n";
}
elsif ($var == 1)
{ print "\$var = 1\n";
}
else
{ print "Не известное \$var\n";
}
Результат: $var = 1
Цикл while выполняет BLOCK до тех пор пока EXPR = true. Метка LABEL не
обязательна и состоит из идентификатора завершающегося символом ':'.
Метка необходима при использовании внутри блока цикла управляющих
операторов next, last и redo. Если метка все же отсутсвует то
эти операторы ссылаются к началу ближайшего цикла.
Блок после continue выполняется всегда перед тем как вычисляется
логическое выражение EXPR. Это подобно EXPR3 в предлжении for
поэтому в этом блоке удобно изменять счетчики и флаги цикла даже
если применяестя оператор next.
Операторы управления циклом.
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 {
|
|