在Perl中访问哈希值(数组)

时间:2013-12-15 19:55:38

标签: arrays perl hash

我确定我遗漏了一些东西,我已经完成了将数组存储为我的哈希值的值,但我正在打印的是数组引用而不是元素,尽管我正在循环通过它。我得到的只是 ARRAY(0x1c ....)

这是我到目前为止所做的:

foreach $y ($hash{$first_char}){
    print $y;
}

缺少什么?

编辑this可能是重复的,但并不具体。

答案:错过了@{}

foreach $y (@{$hash{$first_char}}){
        print $y;
    }

2 个答案:

答案 0 :(得分:3)

我猜你的%hash是数组引用的哈希值。 (显示输出:

use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper \%hash;

有助于澄清您的问题。)

如果是这样,并且您试图遍历其中一个数组中的元素,则需要:

for my $y ( @{ $hash{$first_char} } ) {

use strict; use warnings;并使用词汇变量(用my声明并限制在最短的实际范围内)也是一个非常好的主意。

答案 1 :(得分:2)

如果%hash中元素的值是数组,那么它们必须是数组引用(例如标量值(因为哈希值只能是标量值)。)

因此,如果您希望遍历存储数组中的每个值,则需要通过将foreach循环(INNERLOOP)的对象更改为(@{$hash{$first_char}})来取消引用数组引用。< / p>

请注意,我将您的语句包装在@{}构造中以获取基础数组。