如何总结哈希的元素?

use*_*579 2 perl data-structures

嗨我有一个哈希,其中键是一个3digit代码,值是该代码下的元素数.我想总结3digit代码并乘以元素数量,然后最后添加它们.例:

000 23
012 42
222 34

[(0+0+0)*23]+[(0+1+2)*42]+[(2+2+2)*34]=0+126+204=330
Run Code Online (Sandbox Code Playgroud)

所以我试过

foreach my $key (sort keys %hash ){      
@arrSum=split(//, $key);
   foreach $i (@arrSum){    
     $sum+=$i;
     $value=$sum*$hash{$key};
   }    
}
Run Code Online (Sandbox Code Playgroud)

这是行不通的.它实际上必须考虑每一行,而是一次性总结所有3digit代码.需要一些帮助.

bvr*_*bvr 17

下面是更多的功能到这个问题的方法,它也使用sum列表::的Util:

use List::Util qw(sum);

my %hash = qw(
    000 23
    012 42
    222 34
);

print sum(map { sum(split //) * $hash{$_} } keys %hash);     # 330
Run Code Online (Sandbox Code Playgroud)