Язык программирования Perl | страница 26




> ($n < 0) ? 0 : --$n $temperature < 20 ? 'холодно' : 'тепло'


Перечень операций в языке Perl не ограничивается рассмотренными в этой лекции. По мере изучения других разделов будут описаны другие, более специализированные операции. Например, нам наверняка понадобится операция чтения строки из стандартного входного потока (обычно связанного с системной консолью). Она обозначается символами <> и по- английски называется diamond, что на русский лучше всего перевести как "кристалл" (хотя встречается русское название "ромб"). Эта операция считывает очередную строку и возвращает ее значение:


> $line = <> # считать в $line строку из стандартного ввода


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

Очередность выполнения операций в выражении определяется их приоритетами и ассоциативностью, но она может быть изменена с помощью скобок. Приоритет определяет порядок вычисления операций в выражении: операции с более высоким приоритетом вычисляются раньше. Например, приоритет у операций умножения и деления выше, чем у сложения и вычитания. Ассоциативность определяет порядок вычислений, если в выражении используются операции с одинаковыми приоритетами. Операции с ассоциативностью слева вычисляются обычным образом, слева направо. Но из двух операций, имеющих ассоциативность справа, первой вычисляется стоящая справа. Например:


> $a ** $b ** $c # ассоциативность справа, т.е. $a**($b**$c) $a * $b / $c # ассоциативность слева, т.е. ($a * $b) / $c $a && $b && $c # ассоциативность слева, т.е. ($a && $b) && $c $a = $b = $c # ассоциативность справа, т.е. $a = ($b = $c) $a | $b ^ $c # ассоциативность слева, т.е. ($a | $b) ^ $c


В таблице 3.2 приводится полный список операций, перечисленных в порядке убывания приоритетов, с указанием их ассоциативности. В этой таблице даны все операции языка Perl, в том числе и не рассмотренные в этой лекции. Многие из них будут изучены в следующих лекциях.

Таблица 3.2. Ассоциативность и приоритет операций (от высокого к низкому).
АссоциативностьПриоритетОперация
Слева24термы и операции над списками (справа налево)
Слева24-> (вызов метода, разыменование)
Не ассоциативные22++ -- (автоинкремент, автодекремент)
Справа21** (возведение в степень)
Справа20! ~ \ + - (логическое НЕ, побитовое отрицание, операция ссылки, унарный плюс, унарный минус)