【问题标题】:Grabbing a list from a multi-dimensional hash in Perl从 Perl 中的多维哈希中获取列表
【发布时间】:2012-09-09 04:09:08
【问题描述】:

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

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

假设我想在一个列表中抓取$wife{"Jacob"} 的内容。我该怎么做?

如果我尝试:

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

我明白了:

ARRAY (0x56d5df8)

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

【问题讨论】:

    标签: perl hash multidimensional-array


    【解决方案1】:

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

    从本质上讲,哈希只能以 scalars 作为值,但引用是标量,因此,您将 arrayref 保存在哈希内,并且必须 dereference 它以一个数组。

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

    say @{$wife{Jacob}};
    

    say "@{$wife{Jacob}}"; # print elements with spaces in between
    

    【讨论】:

      【解决方案2】:

      我猜到这个时候你一定知道 $ 指一个标量 而@ 指的是一个数组。

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

      say @wife{$key};
      

      而不是

      say $wife{$key};
      

      【讨论】:

        猜你喜欢
        • 2016-07-22
        • 2015-01-17
        • 2015-01-18
        • 2012-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        相关资源
        最近更新 更多