int ($num + .5); ($num += 5 / (10 ** ($decimal_places + 1))) =~ s/(?<=\.)(\d{1,$decimal_places}).*$/$1/; #### $, = $/; print map { sprintf("%.2f", $_) } values %stats;