# действие, выполняемое перед новой итерацией цикла
}
# сюда происходит переход по last
Циклы могут быть вложены один в другой. Когда требуется прервать вложенный цикл, перед ним ставится метка. Метка - это идентификатор, состоящий из латинских букв, знаков подчеркивания и цифр и начинающийся с буквы, после которого стоит знак двоеточия. Соблюдая хороший стиль программирования, следует записывать метки заглавными буквами. В операторе управления циклом метка указывает, выполнение какого цикла нужно прервать:
CYCLE_1:
while (условие продолжения цикла 1) {
CYCLE_2:
while (условие продолжения цикла 2) {
if (условие выхода из всех циклов) {
last CYCLE_1;
}
CYCLE3:
while (условие продолжения цикла 3) {
if (условия прерывания 2-го цикла) {
next CYCLE_2;
}
}
# сюда произойдет переход по next CYCLE_2
}
}
# сюда произойдет переход по last CYCLE_1
Метка может ставиться перед любым предложением. При помощи блока и операторов управления циклом с меткой можно имитировать управляющую структуру, подобную оператору
SWITCH: {
unless (defined $t) { # если $t не определено
$t = 25; redo SWITCH; # задать значение по умолчанию
}
if ($t < 10) { $say = 'холодно'; last SWITCH; }
if ($t < 18) { $say = 'прохладно'; last SWITCH; }
if ($t < 27) { $say = 'тепло'; last SWITCH; }
$say = 'жарко';
}
print "Сегодня $say\n";
В Perl имеется оператор перехода
1 Переход к выполнению предложения, перед которым стоит метка:
goto МЕТКА;
2 Переход к метке, имя которой получено в результате вычисления выражения:
goto выражение;
3 Замена вызова указанной подпрограммы на подпрограмму, выполняющуюся в данный момент (применяется загрузчиками модулей Perl):
goto &подпрограмма;
Оператор
Порядок выполнения действий в простом предложении можно задавать с помощью модификаторов выражений. За любым выражением может стоять один из следующих модификаторов:
выражение if выражение
выражение unless выражение
выражение while выражение
выражение until выражение
выражение foreach список
Модификатор задает условие выполнения (в случае
SWITCH: {
$t = -36, redo SWITCH unless defined $t;
$say = 'холодно', last SWITCH if $t < 10;
$say = 'прохладно', last SWITCH if $t < 18;
$say = 'тепло', last SWITCH if $t < 27;
$say = 'жарко';
}
Иногда удобно задавать повторение действия с помощью циклических модификаторов, например:
++$count, --$sum while (rand < 0.1);
$random = rand until $random > 0.7;
Применение модификаторов делает программу легче для понимания, поскольку акцент переносится на основное действие, стоящее в начале предложения. К тому же запись упрощается, так как не используется блок, а условное выражение в модификаторе можно не заключать в круглые скобки.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии