#!/usr/bin/perl use strict; use warnings; my %servers; while () { chomp; my @line = split /\,/; my $name = shift @line; if (exists $servers{$name}) { foreach my $index (0..$#line) { $servers{$name}[$index] += $line[$index]; } } else { $servers{$name} = [@line]; } } foreach my $key (keys %servers) { print join(',',$key,@{$servers{$key}}), "\n"; } __DATA__ server1,4,2,2 server1,6,2,2 server1,4,1,1 server2,10,1,2 server2,1,1,1