1

在 Programming Perl (the book) 我读到我可以创建一个字典,其中条目包含一个数组,如下所示:

$wife{"Jacob"} = ["Leah", "Rachel", "Bilhah", "Zilpah"];

假设我想获取$wife{"Jacob"}列表中的内容。我怎样才能做到这一点?

如果我尝试:

$key = "Jacob";
say $wife{$key};

我得到:

ARRAY (0x56d5df8)

这让我相信我得到的是参考,而不是实际的列表。

4

2 回答 2

4

有关使用复杂数据结构和引用的信息。

本质上,散列只能将标量作为值,但引用是标量,因此,您将 arrayref 保存在散列中,并且必须将其取消引用到数组。

要取消引用引用,请使用@{...}语法。

say @{$wife{Jacob}};

或者

say "@{$wife{Jacob}}"; # print elements with spaces in between
于 2012-09-16T21:49:54.100 回答
1

我想这个时候你一定知道它 $指的是一个标量和@一个数组。

既然你自己说那个键的值是一个数组,那么你应该

say @wife{$key};

代替

say $wife{$key};
于 2012-09-17T11:12:57.547 回答