数组数组的哈希元素

Bra*_*rad 0 perl perl-data-structures

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

我这样做:

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

print Dumper(%testhash);
Run Code Online (Sandbox Code Playgroud)

但我得到这个作为输出:

$VAR1 = 'hashelm';
$VAR2 = [
          '2A',
          '2B'
        ];
Run Code Online (Sandbox Code Playgroud)

我希望更像是:

$VAR1 = 
   hashlelm => (
        [
          '1A',
          '1B'
        ];
        [
          '2A',
          '2B'
        ];
   )
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我已经使用perl 多年了,这个真的让我难过!

che*_*ner 6

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

$testhash{hashelm} = [ ["1A","1B"], ["2A","2B"] ];
Run Code Online (Sandbox Code Playgroud)

阅读有关列表值构造函数的perl文档中的更多内容.


dgw*_*dgw 5

这将有效:

$testhash{hashelm}=[
        ["1A","1B"],
        ["2A","2B"]
];
Run Code Online (Sandbox Code Playgroud)

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