Побитовые операторы
Побитовые операторы воздействуют на бинарное представление целых чисел и имеют целочисленный результат. Если операндом является строка или дробное число, Perl предварительно преобразуетего в целое число, обрабатывает операнд, используя 32-битное представление.
Все побитовые операторы С представлены в языкеPerl: Рассмотрим следующие примеры побитовых операций:
$x = 5; # 101 в двоичном $y = 3; # 011 в двоичном print $x | $y; # 7 (111) print $x & $y; # 1 (001) print $x ^ $y # 6 (110) print $x & ~1; # 4 (100) print $x << 2 # 20 (10100) print $x >> 1 # 2 (10)
Так же как в С, поведение операторов сдвига вправо зависит отреализации языка в случае, если операнд является отрицательным.
Операторы сравнения
Операторы сравнения сравнивают величины двух операндов. Также как при работе с арифметическими операторами, Perl преобразует строчные операнды в численные перед тем, как выполнять сравнение. Для того чтобы позволить скрипту сравнивать строки, которые не являются числами, Perl имеет дополнительные операторы строкового сравнения. Эти операторы сравнивают строки, используявеличины ASCII. Если численное значение задано как операнд присравнении строк, оно сначала преобразуется в строку. Таблица перечисляет операторы сравнения:
Число | Строка | Значение | == | eq | равно | != | nе | не равно | > | gt | больше чем | < | it | меньше чем | >= | gе | больше или равно | <= | lе | меньше или равно | <=> | cmp | не равно (результат со знаком) |
Результатом операции сравнения является единица, если сравнение истинно и нуль в противном случае. Однако последняя операция (<=> или cmp) может возвращать значения -1, 0 или 1 в зависимости от того, является ли значение первого операнда меньше, чем второго, равным ему или большим.
Примечание: Оператор cmp языка Perl ведет себя, аналогично функции Strcmp() библиотеки времени выполнения языка С.
Рассмотрим следующий пример сравнения:
$x = 5; # x равно 5 print ($x < 4); # если false, то выведет 0
1 2 3 4
8 8 8
| |