Синтаксис
Perl имеет свободный формат. Комментарии начинаются с символа '#'
и продолжаются до конца строки. Декларации могут использоваться в
любом месте программы так же как и предложения (statements), но действуют
они только в фазе компиляции программы. Обычно их помещают или в начале
или в конце программы. Декларация подпрограмм позволяет использовать
имя подпрограммы как списковый оператор, начиная с момента декларирования. sub test; # Декларация подпрограммы test $var1 = test $0; # Использование как оператора списка. Декларации подпрограмм могут быть загружены из отдельного файла предложением require или загружены и импортированы в текущую область имен предложением use. Подробно см. главу Модули.
Простое предложение обязательно заканчивается символом ';' если только это не последнее предложение в блоке где ';' можно опустить. Заметьте, что существуют операторы такие как eval{} и do{}, которые выглядят как сложные предложения, но на самом деле это термы и требуют обязательного указания конца предложения. Любое простое предложение может содержать single модификатор перед ';'. Существуют следующие single модификаторы: if EXPR где EXPR - выражение, возвращающее логическое значение true или false.
Модификаторы while и until вычисляются в начале предложения кроме
блока do, который выполняется первым. if EXPR- Модификатор "если". Предложение выполняется, если EXPR возвращает true. Пример: $var = 1; while EXPR - Модификатор "пока". Предложение выполняется пока EXPR = true Пример: $var = 1; Результат: 1234
Пример: $var = 1; Результат: 12345
Пример: $var = 1; Результат: 1 Последовательность простых предложений, ограниченная функциональными ограничителями, называется блоком. В Perl это может быть целый файл, последовательность предложений в операторе eval{} или чаще всего это множество простых предложений, ограниченных круглыми скобками '{}'. Существуют следующие виды сложных предложений: if (EXPR) BLOCK
Обратите внимание, что сложные предложения описаны в термах блоков, а не предложений, как в языках C или Pascal. Поэтому необходимо всегда использовать круглые скобки для обозначения блока. if (EXPR) BLOCK -
Вычисляется логическое выражение EXPR и если true блок выполняется.
$var =1; Результат: 1
$var =2; Результат: $var не равно 1
$var = 1; Результат: $var = 1
Цикл while выполняет BLOCK до тех пор пока EXPR = true. Метка LABEL не обязательна и состоит из идентификатора, завершающегося символом ':'. Метка необходима при использовании внутри блока цикла управляющих операторов next, last и redo. Если метка все же отсутствует, то эти операторы ссылаются к началу ближайшего цикла. Блок после continue выполняется всегда перед тем как вычисляется логическое выражение EXPR. Это подобно EXPR3 в предложении for, поэтому в этом блоке удобно изменять счетчики и флаги цикла даже если применяется оператор next.
next - подобен continue в С. Переходит к началу текущего цикла т.е. повторяет итерацию. Пример: M1: Результат: 1 2 4 6
Пример: M1: Результат: 2 4
Пример: M1: Результат: 2 5 7 LABEL for (EXPR1; EXPR2; EXPR3) BLOCK Пример: for ($i = 2; $i < 5; ++$i) Результат: LABEL foreach VAR (LIST) BLOCK Пример: @месяц = ("январь","февраль","март");
Результат: январь февраль март @месяц = ("январь","февраль","март"); Результат: ЯНВАРЬФЕВРАЛЬМАРТ for $i (3,5,7) Результат: 3 5 7 Блок не зависимо от того имеет он метку или нет семантически представляет собой цикл который выполняется один раз. Поэтому действие операторов цикла next, last, redo - аналогично описанному выше. Блоки удобны для построения switch (переключатель) структур. В Perl нет специального оператора switch подобного языку С поэтому вы сами можете создавать удобные для вас конструкции. Опыт автора показывает что для простоты написания лучше всего подходит конструкция вида if ... elsif ... else ... хотя можно сочинить и нечто подобное: SWITCH: Выбирайте сами по своему вкусу.
В Perl существует оператор goto хотя где , как и когда его применять как говорил Ходжа Насреддин "Тонкий философский вопрос". Для начинающих программистов которым от так "нужен" я бы вообще посоветовал "забыть" о его существовании. Однако при создании больших производственных задач на последнем этапе особенно при отработке "отвальных" ошибочных ситуаций конечно goto нужен. В Perl реализовано три формы goto. goto - метка, goto - выражение и goto - подпрограмма. goto ----метка выполняет непосредственный переход на указанную
метку. goto ("M1", "M2", "M3")[$i]; здесь $i используется как индекс массива указанного непосредственно в выражении.
В Perl реализован очень удобный механизм для написания документации в момент создания программы. Для этого применяются специальные POD операторы. Если в теле программы интерпретатор встречает оператор начинающийся с символа '=' например: = head Набор стандартных процедур то пропускается все до слова '=cut'. Это удобно для включения длинных на несколько строк или страниц комментариев. Затем с помощью специальной программы pod можно отделить текст документации от текста программы. [Назад] [Содержание] [Вперед] |