Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Amusement in Auto-Increments

by JavaFan (Canon)
on Jul 22, 2009 at 11:09 UTC ( [id://782251]=note: print w/replies, xml ) Need Help??


in reply to Amusement in Auto-Increments

Bizzare!
Bizarre, but documented:
       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]*\z/", 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'

Replies are listed 'Best First'.
Re^2: Amusement in Auto-Increments
by cog (Parson) on Jul 22, 2009 at 20:52 UTC

    Using this bit of documentation, here's what happens:

  • 1zz
  • 1zz doesn't match "/^[a-zA-Z]*[0-9]*\z/"

    Rule #1 - gets converted to a number, 1, which is then incremented to 2.

  • zzz
  • zzz matches "/^[a-zA-Z]*[0-9]*\z/"

    Rule #2 - the last z is incremented to a (stays in the same range, which is a-z), carries one over; second z is incremented to a, carries one over; first z is incremented to a, carries one over, which gets turned into an a.

  • zz1
  • zz1 matches "/^[a-zA-Z]*[0-9]*\z/"

    Rule #2 - 1 is incremented to 2.

  • z3z
  • z3z doesn't match "/^[a-zA-Z]*[0-9]*\z/"

    Rule #1 - the value is converted to numeric; since there are no digits before the first non-digit, the numeric value is 0; that value is then incremented to 1.

  • zz9
  • zz9 matches "/^[a-zA-Z]*[0-9]*\z/"

    Rule #2 - 9 is incremented to 0, carries one over, and then the process with the two zs is the same as from above.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://782251]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (10)
As of 2024-04-19 08:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found