Abdulaziz Ghuloum writes:
>
> So, is there a rational reason why the increment operator should behave this
> way and why the decrement operator behaves differently?
Yes, increment is magic, but decrement is not. In the perlop man page
(perldoc perlop), you'll find
Auto-increment and Auto-decrement
"++" and "--" work as in C. That is, if placed before a
variable, they increment or decrement the variable before
returning the value, and if placed after, increment or
decrement the variable after returning the value.
The auto-increment operator has a little extra builtin
magic to it. If you increment a variable that is numeric,
or that has ever been used in a numeric context, you get a
normal increment. If, however, the variable has been used
in only string contexts since it was set, and has a value
that is not the empty string and matches the pattern
`/^[a-zA-Z]*[0-9]*$/', the increment is done as a string,
preserving each character within its range, with carry:
print ++($foo = '99'); # prints '100'
print ++($foo = 'a0'); # prints 'a1'
print ++($foo = 'Az'); # prints 'Ba'
print ++($foo = 'zz'); # prints 'aaa'
The auto-decrement operator is not magical.
I hope this helps,
Tim