Читаем Язык программирования Perl полностью

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 в языке C. Например, так можно записать только одно присваивание переменной $say в зависимости от условия:


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 имеется оператор перехода goto, в котором также используются метки. С его помощью можно перейти к выполнению помеченной конструкции в текущем или в вызывающем блоке. Но его нельзя применять для перехода в конструкцию, требующую инициализации: подпрограмму или цикл for. Этот оператор имеет три разновидности.

1Переход к выполнению предложения, перед которым стоит метка:


goto МЕТКА;


2Переход к метке, имя которой получено в результате вычисления выражения:


goto выражение;


3Замена вызова указанной подпрограммы на подпрограмму, выполняющуюся в данный момент (применяется загрузчиками модулей Perl):


goto &подпрограмма;


Оператор goto заслуженно порицается теоретиками и практиками программирования, поскольку он сильно запутывает логику выполнения программы. Так что правилами хорошего стиля программирования рекомендуется использовать его только при крайней необходимости. Хотя goto и можно применить для выхода из цикла, но для этого лучше воспользоваться оператором last.

Порядок выполнения действий в простом предложении можно задавать с помощью модификаторов выражений. За любым выражением может стоять один из следующих модификаторов:


выражение if выражение выражение unless выражение выражение while выражение выражение until выражение выражение foreach список


Модификатор задает условие выполнения (в случае 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;


Применение модификаторов делает программу легче для понимания, поскольку акцент переносится на основное действие, стоящее в начале предложения. К тому же запись упрощается, так как не используется блок, а условное выражение в модификаторе можно не заключать в круглые скобки.

В программах на Perl можно встретить ключевое слово do с последующим блоком, что похоже на управляющую структуру. Но конструкция do выступает в качестве терма в выражении. Иначе говоря, do делает из блока выражение, значением которого будет значение последнего предложения в блоке. Например, в такой операции присваивания:


Перейти на страницу:

Похожие книги

Информатика: аппаратные средства персонального компьютера
Информатика: аппаратные средства персонального компьютера

Рассмотрены основы информатики и описаны современные аппаратные средства персонального компьютера. Сформулированы подходы к определению основных понятий в области информатики и раскрыто их содержание. Дана классификация современных аппаратных средств персонального компьютера и приведены их основные характеристики. Все основные положения иллюстрированы примерами, в которых при решении конкретных задач используются соответствующие программные средства.Рекомендуется для подготовки по дисциплине «Информатика». Для студентов, аспирантов, преподавателей вузов и всех интересующихся вопросами современных информационных технологий.

Владимир Николаевич Яшин

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT