使用哈希访问哈希

时间:2013-06-20 13:18:20

标签: perl hash

我有散列的哈希。

我想只迭代'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

或以某种方式直接访问这些值?

由于

1 个答案:

答案 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}) { ... }