无法计算出多维 Perl 哈希引用:不是 HASH 引用

问题描述 投票:0回答:1

是的,我已经浏览了许多“不是哈希参考”的文章,但似乎没有一篇能解决我的问题。我有一个多维哈希。在一个 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
是对哈希的引用,所以我很困惑。

perl reference hashmap
1个回答
0
投票

$ref 不是哈希引用(如

{ secs => 2272 }
),而是对哈希引用的引用(如
\{ secs => 2272 }
)。因此需要再次取消引用它:

  DB<5> p ${$ref}->{"secs"}
2272
© www.soinside.com 2019 - 2024. All rights reserved.