$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 |
! ~ \ + - (логическое НЕ, побитовое отрицание, операция ссылки, унарный плюс, унарный минус) |
Слева |
19 |
=~ !~ (привязка к шаблону: совпадение, несовпадение) |
Слева |
18 |
* / % х (умножение, деление, деление по модулю, повторение строки) |
Слева |
17 |
+ - . (сложение, вычитание, конкатенация строк) |
Слева |
16 |
<< >> (побитовый сдвиг влево или вправо) |
Не ассоциативные |
15 |
именованные унарные операции и операции над файлами |
Не ассоциативные |
14 |
< > ≤ ≤ lt gt le ge (меньше, больше, меньше или равно, больше или равно и их строковые эквиваленты) |
Не ассоциативные |
13 |
== != <=> eq ne cmp (равно, не равно, сравнение и их строковые эквиваленты) |
Слева |
12 |
& (побитовое И) |
Слева |
11 |
| ^ (побитовое ИЛИ, побитовое исключающее ИЛИ) |
Слева |
10 |
&& (логическое И) |
Слева |
9 |
|| (логическое ИЛИ) |
Не ассоциативные |
8 |
.. ... (не включающие или включающие граничные значения диапазоны) |
Справа |
7 |
?: (операция выбора или условная операция) |
Справа |
6 |
= += -= *= и т. д. (присваивание и присваивание с вычислением) |
Слева |
5 |
, => (запятая и запятая-стрелка) |
Не ассоциативные |
4 |
операции над списками (слева направо) |
Справа |
3 |
not (логическое НЕ) |
Слева |
2 |
and (логическое И) |
Слева |
1 |
or xor (логическое ИЛИ, логическое исключающее ИЛИ) |
В Perl имеется большое количество операций, в том числе и весьма экзотических. Поэтому, если возникает сомнение в порядке их вычислений, то всегда можно использовать скобки для управления очередностью вычислений в выражении.
Понимание изложенного в этой лекции материала о скалярных операциях совершенно необходимо для разработки программ на Perl, хотя запоминать все приведенные здесь операции совершенно излишне. Операции и выражения являются основой для освоения материала о синтаксических правилах языка Perl, о которых пойдет речь в следующей лекции.
Лекция 4. Управляющие структуры
В этой лекции описываются основы синтаксиса языка Perl, ключевые слова и правила составления Perl-программы. В ней рассмотрено все многообразие управляющих структур, как традиционных, так и специфичных только для этого языка программирования. Стиль программирования на Perl подразумевает свободу выражения идей программиста, и различные синтаксические варианты максимально способствуют этому.
Цель лекции: познакомиться с синтаксическими правилами составления программ на языке Perl, которые сначала могут показаться непростыми, но обладают исключительной гибкостью и мощью, предоставляют полный контроль над ходом выполнения программы и учитывают разнообразие стилей при разработке программ.
Читать дальше