是的,我已经浏览了许多“不是哈希参考”的文章,但似乎没有一篇能解决我的问题。我有一个多维哈希。在一个 for 循环中,我的哈希值处于下几个级别,仅处理链中最后一个哈希值,我想通过对最后一个哈希值进行哈希引用来节省输入。
该值存在:
$date2solveInfo{ $weekDate}{ $dow}{ "secs} == 2272
我像这样分配我的哈希引用:
my $ref = \( %date2solveInfo{ $weekDate}->{ $dow});
调试器即将执行该行,如下所示。
DB<2> x %date2solveInfo # showing what we're taking a reference to
0 '2020-09-07'
1 HASH(0x7faaec193f68)
'Tue' => HASH(0x7faaec193f20)
'secs' => 2272
DB<3> s # does the reference assignment above
DB<3> x $ref # showing the contents of $ref
0 REF(0x7faaea208ef8)
-> HASH(0x7faaec193f20)
'secs' => 2272
DB<4> p $ref->{"secs"} # try to deref the hash reference
Not a HASH reference at (eval 15)[/System/Library/Perl/5.30/perl5db.pl:738] line 2, <$fh> line 10.
调试器似乎显示
$ref
是对哈希的引用,所以我很困惑。
$ref 不是哈希引用(如
{ secs => 2272 }
),而是对哈希引用的引用(如 \{ secs => 2272 }
)。因此需要再次取消引用它:
DB<5> p ${$ref}->{"secs"}
2272