Инкремент строк
Операторы автоинкремента и автодекремента работают аналогично траниционным операторам ++ и --, но есть интересная особенность, когда эти операторы применяют к строкам.
Будучи примененными к строкам, операторы изменяют хвостовую часть строки, делая попытку увеличить или уменьшить ее на единицу.
Если в строке стоит целое число, то изменяется оно:
my $event = "YAPC::Russia 2008"; $event++; say $s; # YAPC::Russia 2009
Если при этом оказывается, что после числа есть точка, то изменяется часть, находящаяся перед ней:
my $filename = "img001.gif";
while ($filename.:e) {
unlink $filename;
$filename++;
}
Аналогично изменяется целая часть дробного числа:
my $pi = "π = 3.14"; $pi--; say $pi; # π = 2.14
Инкремент и декремент строк, в которых нет чисел, изменяет последний символ таким образом, что он заменяется следующим по порядку.
my $abc = "abc"; $abc++; # abd
После того, как достигнут последний символ в интервале, символ заменяется первым из этого интервала, и происходит перенос в следующий разряд, то есть изменяется предыдущий символ.
Порядок символов в интервалах соответствует последовательностям символов в юникоде, например: 0..9, A..Z, a..z, Α..Ω, α..ω, א..ת.