使用Data :: Dumper时计算哈希值

时间:2013-06-11 10:05:33

标签: perl hash

我需要在Perl哈希中找到值的计数(即abc1),如果> 4运行在IF块内运行内部命令。我只需要弄清楚如何计算数值#的概念。

(我可以留下我尝试过的代码示例,但这会导致无法控制的笑声和混乱)

我正在使用Data::Dumper,并使用以下格式在哈希值中存储键/值。

push @{$hash{$key}}, $val;

哈希打印给出:

$ print Dumper \%hash;

    $VAR1 = {
      '5555' => [
                   'abc1',
                   'abc1',
                   'abc1'
                 ]
    };

请告诉我如何计算。

提前致谢。

2 个答案:

答案 0 :(得分:2)

那么,你想要计算那个特定的字符串,还是元素的数量?

my $count = @{$hash{$key}};   # get the size of the array (all elements)

my %num;
for my $val (@{$hash{$key}}) {
    $num{$val}++;             # count the individual keys
}
print "Number of 'abc1': $num{'abc1'}\n";

答案 1 :(得分:1)

散列中的值的数量与键的数量相同。但是,您所追求的是数组中元素的数量(从散列值引用)。要获得数组的大小,只需在标量上下文中使用它。对于数组引用,您必须首先取消引用它:

my $count = @{ $hash{$key} };