#!/usr/bin/perl -w use strict; use Data::Dump qw(pp); my @players = ( {name => 'Bob', deaths => 2, kills => 5}, {name => 'Bennie', deaths => 1, kills =>13}, {name => 'Bob', deaths => 10, kills => 10}, {name => 'Jane', deaths => 0, kills =>30} ); my %playerHoH; foreach my $href (@players) { my $name = $href->{name}; $playerHoH{$name}{deaths} += $href->{deaths}; $playerHoH{$name}{kills} += $href->{kills}; } # adding new player is easy... same case as adding deaths and # kills to an existing player. # $palyerHoH{name} will be created if it doesn't already exist. $playerHoH{mary}{deaths} += 4; $playerHoH{mary}{kills} += 20; print '%playerHOH = ',pp(\%playerHoH),"\n"; __END__ Prints: \%playerHOH = { Bennie => { deaths => 1, kills => 13 }, Bob => { deaths => 12, kills => 15 }, Jane => { deaths => 0, kills => 30 }, mary => { deaths => 4, kills => 20 }, }