my %next; @next{0..9,'a'..'y','A'..'Y'} = (1..9,'a'..'z','B'..'Z'); sub inc36 { my ($l, $i, $r) = shift=~/^(.*?)([^zZ]?)([zZ]*)$/; $l . $next{ $i||0 } . (0 x length $r) }