Операция «запятая»
Бинарная операция «запятая» (,) в списковом контексте является всего лишь разделителем элементов
списка и заносит в него оба своих аргумента:
@а = (1, 2); # Создается массив скаляров и его элементам
# присваиваются значения 1 и 2
В скалярном контексте эта операция полностью соответствует аналогичной операции языка С —
сначала вычисляется левый операнд, а затем правый операнд, вычисленное значение которого и является
возвращаемым значением этой операции:
$а = (1, 2); # Переменной $а присваивается значение 2
Эта операция обладает свойством сочетаемости и если в одном выражении она встречается несколько
раз, то все ее вхождения вычисляются слева направо, приводя к тому, что возвращаемым значением в
скалярном контексте является значение самого правого выражения из последовательности выражений,
разделенных запятыми. Например, следующее выражение будет вычислено равным 25, если переменная $m равна 5:
$m, $m+5, $m**2;
Операция «запятая» несколько неудобна, если в списке значения должны задаваться парами, как, например,
в конструкторе хэш-массива. Для улучшения читаемости подобных конструкций в языке Perl существует
синоним операции «запятая» — операция =>, которая семантически полностью соответствует своему двойнику.
Правда, эта операция обладает еще одним свойством, достаточно полезным в случае ее использования в
качестве разделителя пар в конструкторах ассоциированных массивов: любой идентификатор, используемый в
качестве ее левого операнда, интерпретируется как строковый литерал.