my $allkeys; for ( @{ $allusers } ) { my $user = $_->{'user'}; if ( !exists $allkeys->{$user} ) { my $attributes = { 'amount' => $_->{'amount'}, 'duration' => $_->{'duration'} }; $allkeys->{$user} = $attributes; } else { my $refAttributes = $allkeys->{$user}; $refAttributes->{'amount'} += $_->{'amount'}; $refAttributes->{'duration'} += $_->{'duration'}; } } my $finalArray; while ((my $key, my $value) = each %{$allkeys}) { my $hash = { 'user' => $key, 'amount' => $value->{'amount'}, 'duration' => $value->{'duration'} }; push @{$finalArray}, $hash; }