- 论坛徽章:
- 95
|
这种写法是不是太复杂?
#!/usr/bin/perl
use strict;
use warnings;
use v5.14;
use List::MoreUtils qw(pairwise);
my %rec;
while (<DATA>) {
chomp;
my ($key, @vals) = split;
if ($rec{$key}) {
$rec{$key} = [ pairwise { [ ++($a->[0]), $a->[1] += $b ] } @{ $rec{$key} }, @vals ];
}
else {
$rec{$key} = [ map [1, $_], @vals ];
}
}
while (my ($key, $vals) = each %rec) {
say join "\t", ($key, map { $_->[1] / $_->[0] } @$vals);
}
__DATA__
a 2 3 1 3 2 2
s 2 2 1 1 2 3
s 1 2 3 1 2 2
f 3 7 2 1 2 1
v 2 1 3 2 2 1
t 2 2 2 2 1 3
b 3 2 2 1 5 2
g 1 3 1 2 1 2
r 2 1 1 1 1 1
t 2 2 1 3 2 3
a 2 3 3 5 2 4
f 3 1 2 2 5 2
s 1 1 4 9 2 5
|
|