Выражения
Таблица 4.4. Приоритет и сочетаемость операций Perl.
Приоритет | Операция | Сочетаемость |
---|---|---|
1 | Вычисление термов и левосторонних списковых операций | Слева направо |
2 | › | Слева направо |
3 | ++ – | Не сочетаются |
4 | * * | Справа налево |
5 | ! ~ \ унарные + и – | Справа налево |
6 | =~! = | Слева направо |
7 | * / % х | Слева направо |
8 | + – . | Слева направо |
9 | " " | Слева направо |
10 | Именованные унарные операции | Не сочетаются |
11 | <>< › = It gt le ge | Не сочетаются |
12 | ==!= < › eq ne cmp | Не сочетаются |
13 | & | Слева направо |
14 | Iл | Слева направо |
15 | && | Слева направо |
16 | I I | Слева направо |
17 | ….. | Не сочетаются |
18 | ?; | Справа налево |
19 | = **= += – =.= *= /= %= х= &= |=л ="= "= &&=|| = | Справа налево |
20 | , › | Слева направо |
21 | Правосторонние списковые операции | Не сочетаются |
22 | not | Справа налево |
23 | and | Слева направо |
24 | or xor | Слева направо |
Некоторые операции, приведенные в табл. 4.4, требуют пояснения. И первым в этом ряду стоят операции с наивысшим приоритетом: термы и левосторонние списковые операции. Термы мы определили в предыдущем разделе и там же разъяснили, что списковые операции и унарные именованные операции рассматриваются компилятором Perl как термы, если список их параметров заключен в круглые скобки. Так как умножение имеет больший приоритет, чем унарная именованная операция sin, то следующие операции вычисляются так, как указано в комментариях к ним:
use Math::Trig; # В пакете определена константа # pi = 3.14159265358979 sin I * pi; # sin(1 * pi) = 1.22460635382238e-016 sin (1) * pi; f (sin 1) * pi = 2.64355906408146
В последнем выражении sin (i) рассматривается как терм, так как после имени операции первой распознаваемое лексемой стоит открывающая круглая скобка, а если это терм, – то и вычислять его надо в первую очередь, как операцию с наивысшим приоритетом.