substr($_, 4, 0, '.'); # at least 4 characters long substr($_, 4, 0) = '.'; # at least 4 characters long $_ =~ s/^(.{4})/$1./; $_ =~ s/(?<=^.{4})/./; pos($_)=4; $_ =~ s/\G/./; # at least 4 characters long $_ .= '.' . chop($_); # exactly 5 chars long $_ /= 10; # a 5 digit number without leading 0s $_ = sprintf('%06.1f', $_/10); # a 5 digit number