use List::Util qw{ sum }; for my $report (values %counts) { my $sum = sum(values %$report); $_ = sprintf '%.2f', 100 * $_ / $sum for values %$report; }