Язык программирования Perl
Компания Valen оказывает услуги аудита и бухгалтерского учета для индивидуальных предпринимателей

Строковые операции


В Perl есть бинарные операции, применяемые только к строкам: конкатенация (или сцепление) двух строк, обозначаемая символом "точка", и репликация (или повторение), обозначаемая латинской строчной буквой "x", поскольку в результате этой операции строка "умножается" указанное число раз.

. конкатенация (например, '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++; даст в результате строку 'yz0'

При этом операция автодекремента, примененная к символьным строкам, не обладает "магическим" действием: буквенная строка, как обычно, преобразуется к нулю, который уменьшается на единицу.



Содержание раздела