Язык программирования Perl
Язык программирования Perl читать книгу онлайн
Курс знакомит с языком программирования Perl, с его принципами, основными возможностями и особенностями в объёме, достаточном, чтобы начать разрабатывать прикладные и системные задачи, включая программирование для сети Интернет.
Курс является достаточно подробным введением в язык программирования Perl. Описывается уникальная культура Perl и особенности, отличающие его от других языков программирования и во многом обусловившие его популярность. Рассматриваются основные средства программирования на языке Perl версии 5.8. Разбираются богатые возможности языка для создания самых разных приложений, а также особый стиль программирования на Perl. Курс ориентирован на студентов, начинающих программистов или разработчиков, применяющих другие языки и желающих писать прикладные или системные программы на Perl.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
$i = 0;while (1) { # безусловно входим в цикл$random = rand; # получаем случайное числоif ($i == 10) { # по достижении счетчика 10last; # ПРЕРЫВАЕМ выполнение цикла}if ($random < 0.5) { # числа меньше 0.5print "n", $random; # выводим на консоль$i++; # и увеличиваем счетчик повторений}}# сюда произойдет переход по lastОператор next (аналог оператора continue в языке C) применяется, когда требуется пропустить выполнение оставшихся предложений в теле цикла и перейти к следующей итерации, начав с проверки условия в заголовке цикла. Вот так можно изменить последний пример, применив next:
$i = 0;while ($i < 10) { # пока счетчик не достигнет 10$random = rand; # получаем случайное числоif ($random > 0.5) { # числа больше 0.5next; # ПРОПУСКАЕМ действия в теле цикла}print "n", $random; # выводим число на консоль$i++; # и увеличиваем счетчик повторений# сюда произойдет переход по next}Оператор redo используется, когда нужно повторить выполнение предложений в теле цикла без проверки условия в заголовке цикла. Вот таким станет последний пример, если использовать redo:
$i = 0;while ($i < 10) { # пока счетчик не достигнет 10# сюда произойдет переход по redo$random = rand; # получаем случайное числоif ($random > 0.5) { # числа больше 0.5redo; # СНОВА НАЧИНАЕМ действия в теле цикла}print "n", $random; # выводим число на консоль$i++; # и увеличиваем счетчик повторений}Во всех рассмотренных циклах может присутствовать необязательный блок continue. В нем располагаются действия, которые нужно выполнить в конце цикла, в том числе при переходе к новой итерации по next. Действия в блоке continue не выполняются при переходах по last и redo. Это может показаться странным, но голый блок рассматривается в Perl как цикл, выполняющийся один раз. В таком блоке может присутствовать фраза continue и использоваться переходы last, next и redo. С учетом предложений управления циклом и блока continue циклическую структуру в общем виде можно изобразить так:
# может быть заголовок цикла: while, until или for{# сюда происходит переход по redo# действие 1, выполняемое в циклеif (условие выхода) {last; # выход из цикла}# действие 2, выполняемое в циклеif (условие продолжения) {next; # выполнение следующей итерации цикла}# действие 3, выполняемое в циклеif (условие возобновления) {redo; # выполнение тела цикла сначала}# действие N, выполняемое в цикле# сюда происходит переход по next} continue {# действие, выполняемое перед новой итерацией цикла}# сюда происходит переход по 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 в языке 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; }
