Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_ekzamen.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.49 Mб
Скачать

75.Язык Perl. Операторы сравнения. Операторы эквивалентности. Побитовое и, побитовое или и Исключающее или. Логическое и и логическое или. Оператор диапазона. Условный оператор.

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

``<'' - возвращает 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);

Оператор диапазона

.. - оператор диапазона. Реально это два разных оператора, в зависимости от контекста. В списковом контексте он работает как оператор диапазона от левого аргумента до правого.

for (1..10) {

#code

}

В скалярном контексте он возвращает булевское значение. Если левый операнд TRUE, то .. принимает значение TRUE, если правый операнд тоже TRUE.

if (101..200) { print 'hi;)';}

- напечатает вторую сотню строк

Условный оператор

?: также как и в C является условным оператором. Он работает подобно if-then-else. Если аргумент перед ? - TRUE, то возвращается аргумент перед :, в противоположном случае возвращается аргумент после :. Скалярный или списковый контекст второго и третьего аргументов передается по наследству.

($a_or_b ? $a : $b) = $c;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]