如何根据来自不同哈希的键对哈希值求和?

fli*_*p99 3 perl

不知道这是否是这个问题的正确标题,因为我是Perl的新手,但我有一个感兴趣的2列文本文件:

AB      Volume
100     280
137     250
150     375
100     100
100     600
137     200
Run Code Online (Sandbox Code Playgroud)

我想总结基于AB#的卷,结果是输出

AB     Instances     Volume
100    3              980
137    2              450
150    1              375
Run Code Online (Sandbox Code Playgroud)

我到目前为止所做的只是在输出文件中显示不同的AB,但我很难得到体积计数的总和.

$isAB{$AB} = 1;
$isVolume{$Volume} =1;
$numAB{$AB}++;

print "AB\tInstances\tVolume\n";
for $AB (sort {$a<=>$b;} keys %numAB) {
        print "$AB\t$numAB{$AB}\n";
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!谢谢

Tot*_*oto 6

怎么样:

#!/usr/bin/perl 
use strict;
use warnings;
use 5.010;

my %res;
while(<DATA>) {
    chomp;
    my @fields = split;
    $res{$fields[0]}{instance}++;
    $res{$fields[0]}{volume} += $fields[1];
}

foreach(sort {$a<=>$b} keys(%res)) {
    say "$_\t$res{$_}{instance}\t$res{$_}{volume}";
}

__DATA__
100     280
137     250
150     375
100     100
100     600
137     200
Run Code Online (Sandbox Code Playgroud)

输出:

100 3   980
137 2   450
150 1   375
Run Code Online (Sandbox Code Playgroud)