in reply to Hashes - perl

It is always helpful to show what you tried, even if it fails.

That way, we can help you understand how to do it better.

my $total = 0; for my $v ( values %Your_Hash_name ){ $total += $v; } # Can also be written as: # $total += $_ for values %Your_Hash_Name; print "Total: $total\n";
Update: I did not notice the second level of hash in the OP - see AnomalousMonk's (++) more correct answer below, for 2 levels of hashes.

             When in doubt, mumble; when in trouble, delegate; when in charge, ponder. -- James H. Boren

Replies are listed 'Best First'.
Re^2: Hashes - perl
by AnomalousMonk (Archbishop) on Oct 19, 2013 at 23:50 UTC
    for my $v ( values %Your_Hash_name ){ $total += $v; }

    Does not sum the data as presented in OPed data structure (seems to be summing the hash reference addresses).

    >perl -wMstrict -le "my %hash = ( '1' => { 'Val1' => '13.12' }, '2' => { 'Val1' => '6' }, '3' => { 'Val1' => '2' }, '4' => { 'Val1' => '15.52' }, ); ;; my $total = 0; for my $v (values %hash) { $total += $v; } print $total; ;; $total = 0; for my $v (values %hash) { $total += $v->{Val1} } print $total; " 73273728 36.64

    Update: Or, per aitap's approach:

    >perl -wMstrict -le "use List::Util qw(sum); ;; my %hash = ( '1' => { 'Val1' => '13.12' }, '2' => { 'Val1' => '6' }, '3' => { 'Val1' => '2' }, '4' => { 'Val1' => '15.52' }, ); ;; my $total = sum map $_->{Val1}, values %hash; print $total; " 36.64