gpt4 book ai didi

perl - 令人困惑的 Perl 数组行为

转载 作者:行者123 更新时间:2023-12-04 23:25:33 25 4
gpt4 key购买 nike

我正在使用 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 对象的数组。

就我而言,如果我调试我的程序和“x”$specificRecord->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::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,但无济于事。

最佳答案

它返回一个数组引用。尝试取消引用它:

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

关于perl - 令人困惑的 Perl 数组行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13298345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com