use Math::BigInt; use warnings; use strict; sub permutate { # convert from decimal to some number base fast my ($perms,$ref) = @_; my @charset = @$ref; my $scalars = @charset; my $pass = ''; my $mod; while($perms) { $mod = $perms % $scalars; while($mod == 0) { $perms = int($perms / $scalars); $mod = $perms % $scalars; } $pass = $charset[$mod] . $pass; $perms = int($perms / $scalars); } return $pass; } my ($start,$end) = @ARGV; my @charset = ("`",'a' .. 'z','0' .. '9'); my $x = Math::BigInt->new($start); my $y = Math::BigInt->new($end); my $num = @charset; for (; $x <= $y; $x++) { next if $x % $num == 0; print permutate($x, \@charset), "\n"; }