--- Nick Transier <[EMAIL PROTECTED]> wrote:
> If I define a variable as a string
> my $var = "a";
>
> I can get the increment to work
> print ++$var; --> prints b
>
> but the decrement
> print --$var --> prints -1
>
> Why? and how can I decrement it?
Incrementing strings is magic that isn't implemented backwards.
In other words, you can't decrement a string.
>From perldoc perlop:
===================================
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 null 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.
__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/