Язык программирования Perl | страница 24
>
. конкатенация (например, 'X' . '=' . '25' даст строку 'X=25')
x репликация (например, 'Дa!' x 3 даст в результате строку 'Дa!Дa!Дa!')
Операция сцепления создает строковый контекст. Поэтому если ее операнды - числа, то они преобразуются в строки, например:
>
'100' . '3' даст в результате строку '1003'
100 . 3 тоже даст в результате строку '1003'
В левой части операции повторения ожидается строка, а в правой - число повторений. Если в правой части операции повторения стоит строка, то она преобразуется к числу. Причем, если правый операнд операции повторения - дробный, то берется его целое значение, а если он отрицательный или равен нулю, то результатом повторения будет пустая строка:
>
100 x 3 даст в результате строку '100100100'
100 x 3.9 даст в результате строку '100100100'
100 x 0 или 100 x .1 или 100 x 'x3' даст в результате пустую строку ''
100 x -20 даст в результате пустую строку ''
Рассмотренная ранее операция автоинкремента может особым образом применяться к строкам, состоящим только из латинских букв и цифр. Для таких строк выполняется увеличение значения каждого символа, начиная с правого, с переносом разрядов влево, как у чисел. При этом символ 'a' становится 'b', 'b' становится 'c' и так далее, а 'z' становится 'a' с увеличением значения символа слева. Следующие примеры поясняют сказанное:
>
$s = 'xzz'; $s++; даст в результате строку 'yaa'
$s = 'XZZ'; $s++; даст в результате строку 'YAA'
$s = 'xy9'; $s++; даст в результате строку 'xz0'
При этом операция автодекремента, примененная к символьным строкам, не обладает "магическим" действием: буквенная строка, как обычно, преобразуется к нулю, который уменьшается на единицу.
В Perl присваивание является бинарной операцией. Ее левым операндом может быть переменная или другая конструкция языка, в которой можно хранить значение. Такая конструкция называется Lvalue ("L-значение", от английского left value), то есть "стоящая в левой части присваивания". Правым операндом может быть любое выражение, а значением выражения присваивания будет значение левого операнда. Например:
>
$num = 5 * 5
$str = 'Happy New Year!'
Поскольку присваивание - это обычная операция, она может участвовать в выражении не один раз, при этом вычисление происходит справа налево:
>
$n1 = $n2 = 25; # иначе говоря: $n2 = 25; $n1 = $n2;
Подобно языку C, в Perl имеются составные операции присваивания, совмещающие вычисление результата операции над левым и правым операндами с присваиванием этого результата левому операнду. То есть обычную запись присваивания результата операции переменной