in reply to incrementing mixed letters and numbers

#!perl use strict; use Math::Base36 ':all'; my $number = decode_base36('9999'); print lc encode_base36(++$number)." " for 1..100;
poj

Replies are listed 'Best First'.
Re^2: incrementing mixed letters and numbers
by Anonymous Monk on Aug 22, 2017 at 13:35 UTC
    That certainly wins the "don't reinvent the wheel" award. :)

    I ended up going with something a bit more self-contained (do need POSIX though, just to get started). Removing the validation checks from the snippet below, where $ARGV[0] is the first value, and $ARGV1 is the count, I ended up with:

    #!/usr/bin/perl -w use strict; use POSIX; use feature 'state'; my $b36str = lc $ARGV[0]; my $begnum = POSIX::strtol($b36str,36); for (my $i = $begnum; $i < $begnum+$ARGV[1]; $i++) { $b36str = base36($i); print "$b36str\n"; } sub base36 { my ($tmpval) = @_; state $digits = join '', '0'..'9', 'a'..'z'; my $newstr = ''; while ($tmpval) { $newstr = substr($digits, $tmpval % 36, 1) . $newstr; $tmpval = int $tmpval / 36; } return $newstr || '0'; }