gpt4 book ai didi

perl - 如何从散列的散列中获取散列切片?

转载 作者:行者123 更新时间:2023-12-03 18:15:26 27 4
gpt4 key购买 nike

我有一个像这样的哈希:

my %h = ( a => { one => 1,
two => 2
},
b => { three => 3,
four => 4
},
c => { five => 5,
six => 6
}
);

print join(',', @{$h{a}{qw/one two/}});

我得到的错误是:
不能在 q.pl 第 17 行使用未定义的值作为 ARRAY 引用
这是打印品的线条。

我期望的是
1,2

最佳答案

要从嵌套散列中获取散列切片,您必须逐步取消对它的引用。您将获得所需的第一个级别:

$h{'a'}

现在,您必须将其取消引用为散列。但是,由于它不是简单的标量,因此您必须将其放在大括号中。要获得整个哈希值,您需要输入 %在大括号前:
%{ $h{'a'} }

现在你想要一个切片,所以你替换了 %@ ,因为您获得了多个元素,并且您还像往常一样将键放在最后:
@{ $h{'a'} }{ @keys }

单独查看大括号可能看起来更容易:
@{         }{       }
$h{'a'} @keys

为了更简单,v5.20 引入了 postfix dereference .您可以从左到右工作,而不是用大括号包裹东西并从内向外工作:
$h{a}->@{qw/one two/};

那个 @和你在第一个大括号前面看到的一样。你仍然知道它是一个散列切片,因为一个大括号跟在 sigil 后面。

关于perl - 如何从散列的散列中获取散列切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781700/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com