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 多年了,这个真的让我难过!
哈希只能存储标量值; (["1A", "1B"], ["2A", "2B"])是一个列表值.在此标量上下文中进行评估时,您只能获得列表中的最后一项,即["2A", "2B"].您需要在散列中存储对列表值的引用:
$testhash{hashelm} = [ ["1A","1B"], ["2A","2B"] ];
Run Code Online (Sandbox Code Playgroud)
阅读有关列表值构造函数的perl文档中的更多内容.
这将有效:
$testhash{hashelm}=[
["1A","1B"],
["2A","2B"]
];
Run Code Online (Sandbox Code Playgroud)
您必须使用方括号作为匿名数组.