是的,我查看了许多“不是 HASH 引用”文章,但似乎没有一篇能解决我的问题。我有一个多维哈希。在 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 }
。因此需要再次取消引用它:要访问简单的哈希引用,您必须使用
相反,你通过使用
效果很好!我删除了多余的 \。
这使我可以根据需要创建键值(显示带有键“a”的虚拟示例)。
谢谢!!