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



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

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

Бинарное && - логическое И. Если левый аргумент 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;

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

= - обычный оператор присваивания. Вообще операторы присваивания работают также как и в C. $a += 2; - то же самое, что и $a = $a + 2; Можно использовать следующие сокращения:

**= += *= &= <<= &&=

   -= /= |= >>= ||=

     .= %= ^= x=

($a += 2) *= 3; - то же самое, что и : $a = $a + 2; $a = $a * 3;

Оператор ``запятая''

, - оператор запятая или comma-оператор. В скалярном контексте он обрабатывает левый аргумент и отбрасывает его значение, потом обрабатывает правый аргумент и возвращает его величину. В этом он подобен comma-оператору из C. В списковом контексте он играет роль разделителя аргументов и вставляет оба аргумента в список. => является синонимом comma-оператора.

Логическое НЕ

Унарное NOT возвращает отрицание аргумента. Оно эквивалентно !, за исключением более низкого приоритета.

Логическое И, ИЛИ и Исключающее ИЛИ

and возвращает конъюнкцию двух выражений. Он эквивалентен &&, за исключением более низкого приоритета. or возвращает дизъюнкцию аргументов. Он эквивалентен ||, за исключением более низкого приоритета. xor (eXclusive OR) - исключающее ИЛИ, возвращает истину, если истинен ровно один из аргументов.

Оператор чтения из файла

В Perl есть несколько операций ввода-вывода. Для вывода из файла используется команда <>.

open(STDIN,"/etc/passwd");

while ($string = <STDIN>)

{

@a = split(/[:]/,$string);

}

Внутри этих скобок стоит дескриптор файла. Считывание происходит построчно. В конце файла <STDIN> принимает значение FALSE и цикл while завершается. По умолчанию считывание происходит в переменную $_. Нулевой дескриптор файла используется также как в sed и awk, то есть считывается поток из файлов перечисленных в командной строке.

Оператор замены строки

Оператор s/PATTERN/REPLACEMENT/egimosx производит поиск строки, соответствующей шаблону PATTERN и если строка найдена, то подстановку на ее место текста REPLACEMENT. Возвращает количество произведенных подстановок. Если перед этим не использовался оператор =~ или !~ для определения переменной, которая будет обрабатываться, то будет модифицироваться переменная $_. Этот оператор используется со следующими опциями:

 

e интерпретирует правую часть как выражение.

 

g производит подстановку на место каждой строки, соответствующей шаблону.

 

i производит поиск различающий большие и маленькие буквы.

 

m обрабатывает строку, как состоящую из нескольких строк.

 

o происходит подстановка только на место первой встреченной строки.

 

s обрабатывает строку, как состоящую только из одной строки.

 

x использует расширенные регулярные выражения.

Например:

$path =~ s|/usr/local/bin|/usr/bin|;

 ($foo = $bar) =~ s/this/that/o;

 $count = ($paragraf =~ s/Mister\b/Mr./gm);


Дата добавления: 2018-04-04; просмотров: 543; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!