数组数组的哈希元素

时间:2012-02-22 21:38:40

标签: perl perl-data-structures

我希望“testhash”是一个哈希,其密钥为“hashelm”,其中包含一个数组或一个数组。

我这样做:

$testhash{hashelm}=(
        ["1A","1B"],
        ["2A","2B"]
);

print Dumper(%testhash);

但我得到这个作为输出:

$VAR1 = 'hashelm';
$VAR2 = [
          '2A',
          '2B'
        ];

我希望更像是:

$VAR1 = 
   hashlelm => (
        [
          '1A',
          '1B'
        ];
        [
          '2A',
          '2B'
        ];
   )

我错过了什么? 我一直在使用perl 而且这个真让我难过!!!

2 个答案:

答案 0 :(得分:6)

哈希只能存储标量值; (["1A", "1B"], ["2A", "2B"])是一个列表值。在此标量上下文中进行评估时,您只能获得列表中的最后一项,即["2A", "2B"]。您需要将引用存储到哈希中的列表值:

$testhash{hashelm} = [ ["1A","1B"], ["2A","2B"] ];

list value constructors上的perl文档中阅读更多内容。

答案 1 :(得分:5)

这将有效:

$testhash{hashelm}=[
        ["1A","1B"],
        ["2A","2B"]
];

您必须使用方括号作为匿名数组。