http://qs321.pair.com?node_id=11125778


in reply to using ref to hash of hash effectively

To get the total sums of cost, damage, armor, you can use the map function to accumulate the various items.

#!/usr/bin/perl use strict; use warnings; use List::Util 'sum'; my $weapons_ref = { dagger => { cost => 8, damage => 4, armor => 0 }, shortsword => { cost => 10, damage => 5, armor => 0 }, warhammer => { cost => 25, damage => 6, armor => 0 }, longsword => { cost => 40, damage => 7, armor => 0 }, greataxe => { cost => 74, damage => 8, armor => 0 }, }; my $cost = sum(map $_->{cost}, values %$weapons_ref); my $damage = sum(map $_->{damage}, values %$weapons_ref); print "cost: $cost damage: $damage\n";

Prints:

cost: 157 damage: 30