--- 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/

Reply via email to