我试图访问一些列表是两个深度到一个散列。下面是我的代码:
my %english = (
greetings => [("Hello", "What's up?")],
);
my %spanish = (
greetings => [("Hola", "Que pasa?")],
);
my %bighash = (
english => %english,
spanish => %spanish,
);
print 'English greetings: ';
if (my $array = $bighash{'english'}{'greetings'}) {
print "n$_" for @$array
}
else {
print 'Fail.';
}
然而,if
条件总是求值为"false"。为什么会这样?
表达式
english => %english,
spanish => %spanish,
不正确,因为哈希值必须是标量(如哈希引用)而不是哈希值。试着
english => %english,
spanish => %spanish,
或
english => { %english },
spanish => { %spanish },
。