混淆Perl阵列行为



我正在使用infoblox设备的perl API(doc:https://ipam.illinois.edu/api/api/doc/)

我有以下代码:

...
my $specificRecord = $recordResults[0];
say $specificRecord->name();
foreach ($specificRecord->ipv4addrs())
{
    say $_;
}

$ precterrecord包含一个infoblox :: dns ::主机记录对象。

当我迭代IPv4Addrs()时,我的问题就来了。根据文档和Perl调试器,IPV4ADDRS()返回包含IPS或DHCP :: fixedAdddr对象的数组。

在我的情况下,如果我调试程序和" x" $ prectrecord-> ipv4addrs()以及$ _,我会得到相同的结果:

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 ::主机对象的" 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()分配给数组,然后对其进行供电。

它正在返回数组参考。尝试提出它:

foreach ( @{ $specificRecord->ipv4addrs() } )

相关内容

  • 没有找到相关文章

最新更新