Язык программирования 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, в том числе и не рассмотренные в этой лекции. Многие из них будут изучены в следующих лекциях.
Ассоциативность | Приоритет | Операция |
---|---|---|
Слева | 24 | термы и операции над списками (справа налево) |
Слева | 24 | -> (вызов метода, разыменование) |
Не ассоциативные | 22 | ++ -- (автоинкремент, автодекремент) |
Справа | 21 | ** (возведение в степень) |
Справа | 20 | ! ~ \ + - (логическое НЕ, побитовое отрицание, операция ссылки, унарный плюс, унарный минус) |