Простой оператор представ
Perl является императивным
языком программирования: его программа состоит из последовательности
операторов, определяющих некоторые действия. Оператор — это
завершенная инструкция интерпретатору на выполнение определенного
действия. Все операторы языка Perl делятся на простые и составные.
Простой оператор представляет собой выражение, возможно, снабженное
модификатором. Составной оператор определяется в терминах
блоков.
Каждый оператор
Perl имеет возвращаемое значение. Для простого оператора —
это значение вычисляемого в нем выражения, для составного
оператора — значение последнего вычисленного в нем оператора.
Операторы обрабатываются
в той последовательности, в которой они встречаются в программе.
Однако среди множества допустимых операторов языка Perl, есть
группа операторов, которая изменяет последовательность выполнения
операторов в программе.
Он определяет собой
любое выражение, завершенное точкой с запятой ";".
Символ точка с запятой обязателен. Он может отсутствовать,
только если простой оператор является последним оператором
в блоке, специальной синтаксической конструкции, о которой
мы поговорим чуть-чуть позже.
Основное назначение
простого оператора — вычисление выражения с побочным эффектом,
который связан с изменением значения некоторых переменных
в выражении при его вычислении. Обычно он реализуется операциями
увеличения/уменьшения на единицу (++, --):
$п++; # Переменная $п увеличивается на единицу. —$п**2; # Переменная $п уменьшается на единицу.
Никакие другие операции
Perl не вызывают побочных эффектов в выражении, если не считать
операции присваивания (простое и составное), результатом вычисления
которой является изменение значения левого операнда. Вызовы
функций также могут приводить к побочным эффектам.
Простой оператор
Perl может содержать выражение и без побочного эффекта. Все
равно он будет рассматриваться интерпретатором как допустимый
оператор, не выполняющий никакого действия, а только вычисляющий
значение выражения. Однако если установлен флаг (-w) отображения
интерпретатором предупреждающих сообщений, то будет получено
сообщение о бесполезности использования соответствующей операции
в void-контексте. Например, при выполнении оператора
($n*$m)**4 + 6;
будет отображено сообщение
Useless use of addition in void context at D:\PERL\EXAMPLE3.PL line 4.
Отметим, что в сообщении упоминается о последней выполненной операции в выражении.
Замечание
Подобное сообщение будет отображаться, даже если в сложном выражении присутствует операция, вызывающая побочный эффект. Сообщение не отображается только в случае выражения, составленного из одних операций уменьшения /увеличения, или выражения присваивания.
Читатель спросит,
какой прок в операторе, не выполняющем никакого действия.
Его можно использовать для задания возвращаемого пользовательской
функцией значения. Забегая вперед, скажем, что если в функции
явно не указано в операторе return о возвращаемое значение,
то по умолчанию Perl считает таковым значение последнего вычисленного
оператора. Именно это обстоятельство и используется многими
программистами для определения возвращаемого значения:
sub raySub {
какие-то операторы condition == true ? "Успех" : "Провал"; # Последний оператор * '
Последний оператор функции mysub вычисляет операцию выбора, в которой второй и третий операнды представлены просто строковыми литералами — выражениями без побочного эффекта. Результат вычисления одного из них и является возвращаемым значением функции.