%myHash = ();
while (<>) {
my ($ts,$a1,$a2,$a3) = split;
# Put into hash by ts-value
if (exists $myHash{$ts}) {
$myHash{$ts}{amount1} = $myHash{$ts}{amount1} + $a1;
$myHash{$ts}{amount2} = $myHash{$ts}{amount2} + $a2;
$myHash{$ts}{amount3} = $myHash{$ts}{amount3} + $a3;
}
else {
$myHash{$ts}{amount1} = $a1;
$myHash{$ts}{amount2} = $a2;
$myHash{$ts}{amount3} = $a3;
}
}
А затем просто пройдите ключи хеша и распечатайте
foreach (keys %myHash) {
printf("%5d %3d %3d %3d\n", $_, $myHash{$_}{amount1}, $myHash{$_}{amount2}, $myHash{$_}{amount3});
}
или что-то в этом роде ... Я не пробежалэто, но что-то вроде этого, я думаю, это то, что вы хотите?