my %servers; while (<>) { chomp; my ($server_id, @fields) = split /,/; my $server = $servers{$server_id} ||= [0, 0, 0]; $server->[$_] += $fields[$_] for 0..$#fields; } for my $server_id (keys %servers) { my $server = $servers{$server_id}; print(join(',', $server_id, @$server), "\n"); }