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';
}