use strict; print pad($_,5), "\n" for (qw(3.14 1 10 100 1000)); sub pad { my ($str,$pad) = @_; my ($add,$right); ($str,$right) = split('\.',$str,2); $right = ($right) ? ".$right" : ''; $add = $pad - length($str); return $str . $right if $add < 1; return ('0' x $add) . $str . $right; } #### old: return $str if $add < 1; new: return $str . $right if $add < 1;