Помогите понять алгоритм работы автоинкремента(autoincrement operator), применительно к строкам

Приведу пример. Допустим, есть код:

$a = "A9"; print ++$a, "\n";
$a = "bz"; print ++$a, "\n";
$a = "Zz"; print ++$a, "\n";
$a = "z9"; print ++$a, "\n";
$a = "9z"; print ++$a, "\n";

Почему вывод будет таким:

B0
ca
AAa
aa0
10

А не таким:

B0
ca
Aa
a0
0a

Ответы (1 шт):

Автор решения: 69 420 1970

Если переменная использовалась только в строковом контексте, имела значение, и не явлалась пустой строкой, и соответствовала шаблону:

/^[a-zA-Z][0-9]$/

то автоинкремент будет выполняться в пределах своего диапазона с добавлением символа (с переносом):

→ Ссылка