通常、Perl でデータをグループ化したい場合は、ハッシュを使用します。これらのハッシュのキーはグループ化基準に対応し、値はアキュムレータとして機能します (この場合のように単純な数値にすることも、後で処理されるのを待つ数値の配列にすることもできます)。
これを行う1つの方法は次のとおりです。
use warnings;
use strict;
# this hash will hold all the cumulatives
my %sums;
# here we scan the source, line by line
# each line is split to key and value
while (<DATA>) {
chomp;
my ($label, $value) = split;
# this line uses the auto-vivification Perl feature:
# if there's no corresponding item in %sums hash, it'll be created (with 0 value)
$sums{$label} += $value;
}
# here we process the resulting hash:
for my $key (sort keys %sums) {
print $key, ' ', $sums{$key}, "\n";
}
__DATA__
aggr3 350.01000213623
aggr3 1228.79999923706
aggr5 250
aggr3 1536
aggr3 690.01000213623
aggr3 1587.20000076294
aggr9 550.01000213623
aggr3 1228
aggr5 905
aggr5 100
コードパッドのデモ。