note
BioLion
<p>Or you could do a hash of arrays ([perldoc://perldsc]) and use [cpan://List::Util] to generate the required results:</p>
<code>
use strict;
use warnings;
use List::Util qw{sum min max};
my %data;
while (<DATA>) {
chomp;
my ($id, $value) = split /,/;
push @{ $data{$id} }, $value; # store values as HoA
}
for my $id (sort keys %data) {
print "$id: " . summarise($data{$id});
}
sub summarise{
my $arr = shift;
return "max=" . max( @$arr )
. " min=" . min( @$arr )
. " sum=" . sum( @$arr )
. " mean=" . ( sum( @$arr )/scalar@$arr )
. "\n";
}
__DATA__
A,10
A,11
A,12
A,13
B,15
B,16
C,17
D,18
</code>
<p>Gives:</p>
<c>
A: max=13 min=10 sum=46 mean=11.5
B: max=16 min=15 sum=31 mean=15.5
C: max=17 min=17 sum=17 mean=17
D: max=18 min=18 sum=18 mean=18
</c>
<p>NB: Code pretty much exactly the same as [toolic]'s post... Just wanted to show TIMTOWTDI!</p>
<div class="pmsig"><div class="pmsig-656648">
<i>Just a something something...</i>
</div></div>
851634
851635