Операторы отношений.
"<" | - арифметическое меньше | ">" | - арифметическое больше | "<=" | - арифметическое меньше или равно | ">=" | - арифметическое больше или равно | "lt" | - строковое меньше | "gt" | - строковое больше | "le" | - строковое меньше или равно | "ge" | - строковое больше или равно |
Операторы равенства.
"==" | результат true если левая часть равна правой (равно) | "!=" | - не равно | "<=>" | - -1 если левая часть меньше правой, 0 если равна, 1 если больше. | "eq" | - строковое равно | "ne" | - строковое не равно | "cmp" | - как и "<=>" применительно к строкам |
Операторы работы с битами.
"&" | - побитное AND | "|" | - побитное OR | "^" | - побитное XOR |
Логические операторы && (AND) и || (OR).
"&&" | - если левое выражение возвращает false, правое не выполняется. | "||" | - если левое выражение возвращает true, правое не выполняется. |
Отличие от подобных операторов в С заключается в том, что в С возвращаемое значение либо 0, либо 1, тогда как в Perl возвращается результат выражения.
Оператор диапазона ".."
Результат работы данного оператора зависит от контекста. В списковом контексте результат есть список с элементами, первый элемент которого это левое выражение и последнее - правое. Значение каждого элемента внутри списка увеличивается на 1. Данный оператор удобен для небольших циклов, т.к. память отводится для всего списка целиком. Поэтому будьте внимательны и не задавайте слишком большой диапазон.
Пример:
for $i (1..4) { print "$i "; }
Результат: 1 2 3 4
В скалярном контексте результат - логическое значение. Каждая ".." операция устанавливает свое собственное состояние. Это false до тех пор пока левый операнд false. Как только левый операнд стал true результат - true до тех пока правый true, после чего результат опять - false. Если вы не хотите проверять правый операнд, то используйте оператор "...".
Правый операнд не вычисляется пока результат false и левый операнд не вычисляется пока результат true. Приоритетность оператора ".." немного ниже чем "&&" и "||". Возвращаемое значение если flase - нулевая строка, если true - порядковый номер начиная с 1. Порядковый номер обнуляется для каждого нового диапазона. Последний порядковый номер добавляется строкой "E0" которая не изменяет его значение, но позволяет фиксировать последнее значение.
Пример:
@алфавит = ("a".."z"); # Массив малых букв латинского алфавита @цифры = (0..9); # Массив цифр
1 2 3 4 5 6
8 8 8
| |