use 5.012; use List::Util qw[reduce]; sub str2num { my ($str, $base) = @_; reduce { $a * $base + $b } 0, split //, $str; } sub num2str { my ($num, $base) = @_; if ($num > 0) { num2str(int($num / $base), $base) . ($num % $base); } else { '0'; } }