Взгляните на Integer :: Tiny . Это позволяет вам указать строку произвольного размера из односимвольных «цифр», а затем преобразовать целые числа в этот набор. Дайте ему строку длины n , и число эффективно преобразуется в базовое n (хотя оно не будет выглядеть как обычное базовое n представление, если только эта строка конечно же, цифры обычно упорядочиваются).
Редактировать: Вот однострочное решение base-10 из комментария Сорпигала, переделанное в base-3:
perl -MInteger::Tiny -e 'my $it = Integer::Tiny->new("012"); printf "%0".$ARGV[0]."d\n", $it->encrypt($_) for (shift..shift);' 1 10 5