LABEL BLOCK continue BLOCK

Обратите внимание, что сложные предложения описаны в термах блоков, а не предложений, как в языке C. Поэтому необходимо использовать круглые скобки для обозначения блока.

if (EXPR) BLOCK - Вычисляется логическое выражение EXPR и если true блок выполняется.

$var =1;

if ($var == 1)

{ print $var,"\n";

}

Результат: 1

if (EXPR) BLOCK else BLOCK2 - Если EXPR=true выполняется BLOCK иначе BLOCK2.

$var =2;

if ($var == 1)

{ print "\$var = 1\n";

}

else

{ print "\$var не равно 1\n";

}

Результат: $var не равно 1

if (EXPR1) BLOCK1 elsif (EXPR2) BLOCK2 ... else BLOCK - Если EXPR1=true выполняется BLOCK1 иначе если EXPR2=true выполняется 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 "; # Результат: 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 "; # Результат: 2 4

}

redo - начать новый цикл, не вычисляя EXPR и не выполняя continue блок.

M1:

while ($i < 6)

{

++$i; # Увеличиваем счетчик на 1

redo M1 if $i == 3; # Далее пропустить для $i = 3

++$i; # иначе увеличиваем счетчик еще раз на 1

}

continue {

print "$i "; # Результат: 2 5 7

}

Цикл for. LABEL for (EXPR1; EXPR2; EXPR3) BLOCK. Оператор for полностью аналогичен оператору for в С. Перед началом цикла выполняется EXPR1, если EXPR2 = true выполняется блок, затем выполняется EXPR3.

for ($i = 2; $i < 5; ++$i){

print $i, " "; # Результат: 2 3 4

}

print "\nПосле цикла i = $i\n"; # После цикла i = 5

Цикл foreach. LABEL foreach VAR (LIST) BLOCK. Переменной VAR присваивается поочередно каждый элемент списка LIST и выполняется блок. Если VAR опущено, то элементы присваиваются встроенной переменной $_. Если в теле блока изменять значение VAR то это вызовет изменение и элементов списка т.к. VAR фактически указывает на текущий элемент списка. Вместо слова foreach можно писать просто for - это слова синонимы.

@month = ("январь","февраль","март"); # Создали массив

foreach $i (@month)

{ print $i," "; # Результат: январь февраль март

}

foreach $i (@month)

{ $i = uc($i); # Перевели в верхний регистр

}

print @ month; # Результат: ЯНВАРЬФЕВРАЛЬМАРТ

for $i (3,5,7)

{ print "$i "; # Результат: 3 5 7

}








Дата добавления: 2015-11-04; просмотров: 672;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.