2

我有这个带有散列的散列。

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

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

谢谢

4

1 回答 1

3

首先,如果您使用连续整数作为哈希的键,那么您很可能应该使用数组。

key对应的hash值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}) { ... }
于 2013-06-20T13:28:26.260 回答