4

Infoblox アプライアンスの Perl API を使用しています (ドキュメント: https://ipam.illinois.edu/api/doc/ )

次のコードがあります。

...

my $specificRecord = $recordResults[0];

say $specificRecord->name();

foreach ($specificRecord->ipv4addrs())
{
    say $_;
}

$specificRecord には、Infoblox::DNS::Host レコード オブジェクトが含まれています。

私の問題は、ipv4addrs() を反復処理しているときに発生します。ドキュメントと perl デバッガによると、ipv4addrs() は IP または DHCP::FixedAddr オブジェクトを含む ARRAY を返します。

私の場合、プログラムをデバッグし、$specificRecord->ipv4addrs() と $_ を "x" すると、同じ結果が得られます。

DB<1> b 70

DB<2> c
Results: 1
aaaa9999test.justice
main::(testScript2.pl:70):          foreach ($specificRecord->ipv4addrs())
main::(testScript2.pl:71):          {

DB<2> x $specificRecord->ipv4addrs();
0  ARRAY(0x64e9e3c)
   0  '8.8.8.8'
   1  '8.8.4.4'

DB<3> n
main::(testScript2.pl:72):              say $_;

DB<3> x $_;
0  ARRAY(0x64e9e3c)
   0  '8.8.8.8'
   1  '8.8.4.4'

以下は、Infoblox::DNS::Host オブジェクトの「x」の関連部分です。

DB<2> x $specificRecord;
0  Infoblox::DNS::Host=HASH(0x8b3eacc)
   '__object_id__' => 'dns.host$._default.justice.aaaa9999test'
   'aliases' => ARRAY(0x8b3e9fc)
        empty array
   'configure_for_dns' => 'true'
   'disable' => 'false'
   'ipv4addrs' => ARRAY(0x64e9e3c)
      0  '8.8.8.8'
      1  '8.8.4.4'
   'ipv6addrs' => ARRAY(0x8aa1bac)
        empty array
   'name' => 'aaaa9999test.justice'
   ...

何が間違っているのか、なぜ foreach が $_ 変数で機能しないのかわかりません。ipv4addrs() を配列に割り当ててから、それを foreaching しようとしましたが、役に立ちませんでした。

4

1 に答える 1

8

配列参照を返しています。逆参照してみてください:

foreach ( @{ $specificRecord->ipv4addrs() } )
于 2012-11-08T21:46:39.580 に答える