我希望“testhash”是一个哈希,其密钥为“hashelm”,其中包含一个数组或一个数组。
我这样做:
$testhash{hashelm}=(
["1A","1B"],
["2A","2B"]
);
print Dumper(%testhash);
但我得到这个作为输出:
$VAR1 = 'hashelm';
$VAR2 = [
'2A',
'2B'
];
我希望更像是:
$VAR1 =
hashlelm => (
[
'1A',
'1B'
];
[
'2A',
'2B'
];
)
我错过了什么? 我一直在使用perl 年而且这个真让我难过!!!
答案 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"]
];
您必须使用方括号作为匿名数组。