http://www.perlmonks.org?node_id=1039018


in reply to Whats with the autoincrementation of a string

Think of every position as a wheel in a mechanical counter.

There are three kinds of wheels 0-9, a-z and A-Z which can be independently be chosen for each position.

Clearer now? =)

edit
perlop
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'

Cheers Rolf

( addicted to the Perl Programming Language)

Replies are listed 'Best First'.
Re^2: Whats with the autoincrementation of a string
by space_monk (Chaplain) on Jun 14, 2013 at 20:09 UTC

    Not quite independently. Any numeric wheels must be at the back.

    e.g. 'Aa00' will work, '00Aa' won't.

    If you spot any bugs in my solutions, it's because I've deliberately left them in as an exercise for the reader! :-)
      Sure, anything with leading digits which isn't a proper number is dealt by atoi in numeric context, IIRC that's due to some C legacy.

      DB<109> @a=a..c => ("a", "b", "c") DB<110> $a[" 1x"] => "b"

      plz note: only with no warnings!

      Cheers Rolf

      ( addicted to the Perl Programming Language)