我确定我遗漏了一些东西,我已经完成了将数组存储为我的哈希值的值,但我正在打印的是数组引用而不是元素,尽管我正在循环通过它。我得到的只是 ARRAY(0x1c ....)。
这是我到目前为止所做的:
foreach $y ($hash{$first_char}){
print $y;
}
缺少什么?
编辑:this可能是重复的,但并不具体。
答案:错过了@{}
foreach $y (@{$hash{$first_char}}){
print $y;
}
答案 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>
请注意,我将您的语句包装在@{}
构造中以获取基础数组。