Язык программирования Perl | страница 23




> $result > 0 && print $result;


В языке Perl есть еще один набор логических операций, так называемых логических операций с низким приоритетом. Они эквивалентны упомянутым выше логическим операциям, но имеют почти самый низкий приоритет по сравнению с другими операциями.


> not логическое НЕ (например, not undef($x)) and логическое И (например, $d >= 1 and $d <= 31) or логическое ИЛИ (например, $m eq 'D' or $m eq 'J' or $m eq 'F') xor логическое ИСКЛЮЧАЮЩЕЕ ИЛИ (например, $d==1 xor $m eq 'J')


Операция логическое ИСКЛЮЧАЮЩЕЕ ИЛИ возвращает истинный результат, если операнды имеют различное значение, а когда оба операнда имеют одинаковое значение (истинное или ложное), то эта операция возвращает "ложь". Низкоприоритетные логические операции тоже применяются для условного выполнения действий.

Побитовые операции (bitwise operators) выполняются над двоичными разрядами операндов. Унарная операция побитовое НЕ (или побитовое отрицание, или побитовое дополнение) меняет каждый разряд операнда на противоположный. Бинарные операции побитовое И, побитовое ИЛИ и побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ выполняют соответствующую двоичную операцию поразрядно над левым и правым операндами. Если операнды числовые, то они преобразуются в целые числа, имеющие гарантированную длину не менее 32 разрядов.


> ~ побитовое НЕ (~ 0b1101 даст результат 0b0010) & побитовое И (0b1010 & 0b0110 даст результат 0b0010) | побитовое ИЛИ (0b1010 | 0b0110 даст результат 0b1110) ^ побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ ( 0b1010 ^ 0b0110 даст 0b1100)


Эти операции могут выполняться над строками. При этом выполняются поразрядные операции над соответствующими битами двух строк, и считается, что более короткая строка дополняется в конце нулевыми разрядами до размера длинной.

Бинарные побитовые операции сдвига выполняются над двоичными разрядами целого числа: значение левого операнда поразрядно сдвигается влево или вправо на число разрядов, указанное правым операндом. При этом освобождающиеся двоичные разряды заполняются нулями.


> << побитовый сдвиг влево (0b1010 << 2 даст результат 0b101000) >> побитовый сдвиг вправо (0b1010 >> 3 даст результат 0b000001)


В Perl есть бинарные операции, применяемые только к строкам: конкатенация (или сцепление) двух строк, обозначаемая символом "точка", и репликация (или повторение), обозначаемая латинской строчной буквой "x", поскольку в результате этой операции строка "умножается" указанное число раз.