my %h; ...; # get info from db $h{$total} += $revenue; #### use warnings; use strict; use Data::Dumper; my %h; while (){ my ($total, $revenue) = split; $h{$total} += $revenue; } print Dumper \%h; __DATA__ 3 555 4 962 3 1 3 1064 5 19 17 8 45 -1 #### $VAR1 = { '5' => 19, '3' => 1620, '45' => -1, '4' => 962, '17' => 8 };