use*_*292 3 arrays perl hash loops
我有一个数组哈希,如图所示:
my %hash = (
234 => ["aa", "bb", "aa", "ab", "aa"],
235 => ["aa", "ab", "aa", "bb", "aa"],
236 => ["bb", "aa", "aa", "aa", "bb"],
...
)
Run Code Online (Sandbox Code Playgroud)
我试图遍历每个值的第一个元素并计算出现的次数bb.
例如,在上面的哈希中,我bb对所有显示的第一个元素都有一个匹配项.我需要将该数字(所有数组的第0个元素中的"bb"的数量)推入一个新数组,然后移动到下一组元素.
对于上面的例子,我将循环遍历数组的所有4个元素并获得最终数组(1, 1, 0, 1, 1).
我在使用正确的代码时遇到了很多麻烦,但还没有找到类似的问题.任何帮助将非常感激.
一个简单的解决方案:迭代哈希值.对于每个值,迭代数组的成员,并在需要时将结果数组加1:
#!/usr/bin/perl
use warnings;
use strict;
my %hash = (234 => [qw/aa bb aa ab aa/],
235 => [qw/aa ab aa bb aa/],
236 => [qw/bb aa aa aa bb/],
);
my @result;
for my $value (values %hash) {
my $i = 0;
for (@$value) {
$result[$i++] += 'bb' eq $_;
}
}
print "@result\n";
Run Code Online (Sandbox Code Playgroud)