Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Документация, учебники по Perl.doc
Скачиваний:
3
Добавлен:
29.10.2018
Размер:
1.83 Mб
Скачать

Бинарные операторы

Звездочка * - умножение двух чисел. Cлэш / - деление числа на число. Процент % - вычисляет модуль двух чисел, x - оператор повторения. В скалярном контексте возвращает строку, состоящую из многократно повторенного левого операнда, причем повторяется он то количество раз, которое стоит справа. В списковом контексте он многократно повторяет список. print 'a' x 80; напечатает букву a 80 раз. @ones = (1) x 80; массив из восьмидесяти единиц. @ones = (5) x @ones сделает все элементы равными пяти. Бинарный плюс - операция сложения двух чисел. Бинарный минус - операция вычитания двух чисел. Бинарная точка - конкатенация строк.

Операторы сдвига

Двоичный сдвиг осуществляется, как и во многих других языках программирования, с помощью операторов ``<<'' и ``>>''. При применении этих операторов значения левых аргументов сдвигаются в соответствующую сторону на количество разрядов, указанное в правых аргументах. Аргументы должны быть целочисленными.

Операторы сравнения

``<'' - возвращает TRUE если левый аргумент численно меньше, чем правый. ``>'' - возвращает TRUE если правый аргумент численно меньше, чем левый. ``<='' - возвращает TRUE если правый аргумент численно меньше или равен левому. ``>='' - возвращает TRUE если левый аргумент численно меньше или равен правому. ``gt'' - возвращает TRUE если левый аргумент меньше (в строковом контексте), чем правый. ``lt'' - возвращает TRUE если правый аргумент меньше (в строковом контексте), чем левый. На поведение операторов lt и gt влияют установки системного языка, если операционная система способна работать с несколькими языками. По этой причине операторы должны корректно работать со строками на языках, отличных от US ASCII, что в системе UNIX задается указанием свойств LC_COLLATE системного locale.

Операторы эквивалентности

== возвращает TRUE, если левый аргумент численно эквивалентен правому. != возвращает TRUE, если левый аргумент численно неэквивалентен правому. <=> возвращает -1, 0 или 1 в зависимости от того, численно меньше, равен или больше левый аргумент правого. eq возвращает TRUE, если левый аргумент эквивалентен правому (в строковом контексте). ne возвращает TRUE, если левый аргумент неэквивалентен правому (в строковом контексте). cmp возвращает -1, 0 или 1 в зависимости от того, меньше равен или больше левый аргумент правого (в строковом контексте).

Побитовое и, побитовое или и Исключающее или

Бинарное & возвращает объединенные побитово операнды. Бинарное | возвращает перемноженные побитово операнды. Бинарное ^ возвращает исключенные побитово операнды.

Логическое и и логическое или

Бинарное && - логическое И. Если левый аргумент FALSE, то правый не проверяется. Бинарное || - логическое ИЛИ. Если левый аргумент TRUE, то правый аргумент не проверяется. ||''и && отличаются от подобных операторов в \verbC| тем, что вместо 0 или 1 они возвращают последнюю обработанную величину. Таким образом, наиболее удобным способом определить домашний каталог пользователя из переменной окружения HOME будет (на практике такой способ определения домашнего каталога пользователя не рекомендуется):

$home = $ENV{'HOME'} || $ENV{'LOGDIR'} ||

(getpwuid($<))[7] || die "You're homeless!\n";

В качестве более удобной для чтения альтернативы Perl поддерживает операторы and и or, которые будут описаны далее. Их приоритет ниже, однако их можно с удобством использовать, не расставляя скобки, после операторов, аргументами которых являются списки:

unlink "alpha", "beta", "gamma"

or gripe(), next LINE;

Если писать в стиле C, то это может быть записано так:

unlink("alpha", "beta", "gamma")

|| (gripe(), next LINE);