Операция повторения в списковом контексте позволяет в качестве ее левого операнда использовать
список — заключенную в круглые скобки последовательность выражений. В этом случае она работает как
повторитель списка — ее результатом будет список, в котором список левого операнда повторяется
заданное правым операндом количество раз:
(10) х 3; # Результат: (10, 10, 10)
("а",5) х 2; # Результат: ("а", 5, "а", 5)
Операция повторения в списковом контексте удобна для задания массива скаляров с одинаковыми
значениями элементов или групп элементов:
@аrrау = ("а", "b") х 2; # Результат:
# аrrау = ("а", "b", "а", "b")
@аrrау = ("а") х 3; # Результат:
# @аrrау = ("а", "а", "а")
ВНИМАНИЕ Если в списковом контексте левый операнд операции повторения не является списком, то она
вычисляет единственное скалярное значение. Например, если в последнем приведенном операторе
присваивания убрать окружающие строку "а" скобки, то первому элементу массива @array будет присвоено
значение "aaa".
Эту операцию можно использовать и для инициализации хэш-массива одинаковыми значениями:
@keys = ( one, two, three); # Определение ключей
# хэш-массива.
@hash{@keys} = ("а") х @keys; # Инициализация значений
# хэш-массива
В последнем операторе присваивания в правой части массив скаляров @keys используется в списковом
контексте и таким образом представляет список своих значений, тогда как в левой части он используется
в скалярном контексте и, следовательно, имеет значение, равное количеству своих элементов.
ВНИМАНИЕ. Символ операции повторения x следует отделять проблемами от операндов, так как иначе при
лексическом анализе он может быть воспринят интерпретатором как относящийся к лексеме, а не представляющий
операцию повторения. Например, при синтаксическом разборе строки $nx$m интерпретатор определит, что в
ней идут подряд две переменные $nx и $m, а не операция повторения содержимого переменной $n, что
приведет к синтаксической ошибке.