That's still not terribly specific. Actually the second case of zz=>aaa throws me but looking at it, this is my *guess* (someone PLEASE correct me). The first case is possible because (intuitively) B follows A and 'a' follows z (in a wraparound sort of way). The wraparound causes a carry so incrementing z by one produces 'a', carry the one to A produces B. The brackets ensure that $foo get assigned first, then operators are executed right to left, starting with ++ and ending with print. The second case is possible with similar mechanics. The second z starts the wraparound carry which is propagated by the first z, producing aaa.
>===== Original Message From "Anil Shekhar" <[EMAIL PROTECTED]> ===== >Thanks Mark. > >I mean how is the following possible. > > print ++($foo = 'Az'); # prints 'Ba' > print ++($foo = 'zz'); # prints 'aaa' > >Thanks >Anil > >----- Original Message ----- >From: "Mark Anderson" <[EMAIL PROTECTED]> >To: "Anil Shekhar" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> >Sent: Tuesday, October 08, 2002 9:56 AM >Subject: RE: autoincrement and autodecrement > > >> "Can someone help me please?" >> >> Can you be more specific about what you don't understand? >> >> If $foo is a string of alpha characters and you use ++ you get a string >with >> the last character incremented alphabetically. >> >> This does not work both ways, -- does not reverse the effect of ++ on >> strings. >> >> /\/\ark >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> -----Original Message----- >> From: Anil Shekhar [mailto:[EMAIL PROTECTED]] >> Sent: Tuesday, October 08, 2002 9:48 AM >> To: [EMAIL PROTECTED] >> Subject: autoincrement and autodecrement >> >> >> Hi ... >> >> I am trying to understand the auto-incr/decr out of the 'perlop' man page. >> >> I could not fully understand the following. >> >> "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 = 'Az'); # prints 'Ba' >> print ++($foo = 'zz'); # prints 'aaa' >> " >> >> Can someone help me please? >> >> Thanks >> Anil >> 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. >> >> >> >> >> >> >> -- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> > > > >-- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]