Perl 6 / все про ++

Инкремент строк

Операторы автоинкремента и автодекремента работают аналогично траниционным операторам ++ и --, но есть интересная особенность, когда эти операторы применяют к строкам.

Будучи примененными к строкам, операторы изменяют хвостовую часть строки, делая попытку увеличить или уменьшить ее на единицу.

Если в строке стоит целое число, то изменяется оно:

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, Α..Ω, α..ω, א..ת.

operators, ++, -- — 8 мая 2008