2

このハッシュにはハッシュがあります。

「0」の値だけを反復したいと思います。

$VAR1 = {
  '1' => {
    '192.168.1.1' => '192.168.1.38'
  },
  '0' => {
    '192.168.32.6' => '192.168.32.43'
  }
};

アクセスできる唯一の方法は、2 つのforeach my $key (keys(%myhash))ループを作成することです。

使ってもいいですか:

foreach my $key (keys(%myhash{0}))  ## does not work

または何らかの方法で値に直接アクセスしますか?

ありがとう

4

1 に答える 1

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}) { ... }
于 2013-06-20T13:28:26.260 に答える