在Perl中,如何从hashrefs数组中的引用中访问值?

mel*_*mel 4 perl reference

我有一系列匿名哈希的引用.从对该数组的引用$allDirArray,我想访问与该键对应的值'dir'.目前我收到错误:

Can't use string ("HASH(0x100878050)") as a HASH ref while "strict refs" 
in use at nameOfProgram.pl line 148.

我的代码:

my $tempDir = ${$allDirArray}[$i]{'dir'};
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 6

错误消息表明您实际上尝试使用字符串" HASH(0x100878050)"作为hashref.所以我怀疑你已经设法将你的哈希字符串化(即,你将它们用作字符串,而Perl将它们变成了字符串).这种情况的一种方法是,如果您将hashref分配给散列键(散列键只能是字符串),或者通过引用这样的赋值中的变量$array[0] = "$hashref".

所以inside ${$allDirArray}[$i]是一个包含"HASH(0x100878050)"的字符串,字面意思是字符串.不是哈希.

最好的办法是确认这可能是为了转储数据结构.您可以使用Data :: Dumper执行此操作:

use Data::Dumper;
print Dumper($allDirArray);
Run Code Online (Sandbox Code Playgroud)