sub decimalToX { my $number = shift or return $_[0]; my $base = @_; my $logbase = log $base; my $string = ''; my $power = int(log($number)/$logbase); while($number){ my $f = $base ** $power; my $times = int($number/$f); $string .= $_[$times]; $number -= $times * $f; } continue { --$power } $string . $_[0] x ($power+1) } print decimaltoX( 5 , qw/0 1/ ); # 101