我有散列的哈希。
我想只迭代'0'的值。
$VAR1 = {
'1' => {
'192.168.1.1' => '192.168.1.38'
},
'0' => {
'192.168.32.6' => '192.168.32.43'
}
};
我可以访问它的唯一方法是创建两个foreach my $key (keys(%myhash))
循环:
我可以使用:
foreach my $key (keys(%myhash{0})) ## does not work
或以某种方式直接访问这些值?
由于
答案 0 :(得分:3)
首先,如果你使用连续的整数作为哈希的键,那么很可能你应该使用数组。
与密钥0
对应的哈希值为$dhcpoffers{0}
,因为它是标量值。 %dhcpoffers{0}
只是语法错误。
你需要
for my $key (keys %{ $dhcpoffers{0} }) { ... }
或者,如果您愿意
my $offer_0 = $dhcpoffers{0};
for my $key (keys %$offer_0) { ... }
从Perl 5的第14版开始,keys
将接受哈希引用,因此您可以编写更清晰的
for my $key (keys $dhcpoffers{0}) { ... }