我刚拿起Perl。 我对访问哈希值有点困惑。下面是我试图访问哈希内部哈希值的代码。 由于我使用简单的文本编辑器进行编码,我无法弄清楚可能出现的问题。请帮忙
my %box = (
Milk => {
A => 5,
B => 10,
C => 20,
},
Chocolate => {
AB => 10,
BC => 25,
CD => 40,
},
);
foreach my $box_key(keys %box) {
foreach my $inside_key (keys %box{box_key})
print "$box_key"."_$inside_key""is for rupees $box{box_key}{inside_key}";
}
答案 0 :(得分:3)
如果语法是
keys %hash
对于哈希,它是
keys %{ ... }
用于哈希引用。在这种情况下,引用存储在$box{$box_key}
中,因此您将使用
keys %{ $box{$box_key} }
此外,您在几个地方访问名为box_key
和inside_key
的元素,其中您确实需要$box_key
和$inside_key
命名的元素。
最后,您可以使用变量名称周围的curlies来指示变量名称结束的Perl。
for my $box_key (keys %box) {
for my $inside_key (keys %{ $box{$box_key} }) {
print "${box_key}_$inside_key is for rupees $box{$box_key}{$inside_key}\n";
}
}
答案 1 :(得分:-1)
ikegami解释得非常好,我觉得你的代码中仍然遗漏了一些问题,这就是为什么你遇到问题,试试下面的代码,希望它对你有帮助。
my %box = (
Milk => {
A => 5,
B => 10,
C => 20,
},
Chocolate => {
AB => 10,
BC => 25,
CD => 40,
},
);
foreach my $box_key(keys %box) {
foreach my $inside_key (keys $box{$box_key}) {
print "${box_key}_$inside_key is for rupees $box{$box_key}{$inside_key}\n";
}
}
输出:
Chocolate_CD is for rupees 40
Chocolate_BC is for rupees 25
Chocolate_AB is for rupees 10
Milk_A is for rupees 5
Milk_C is for rupees 20
Milk_B is for rupees 10