gpt4 book ai didi

Perl:数组取消引用

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

我试图弄清楚如何取消引用数组中的值但已经走到了尽头,我试图研究这个问题,但需要一些帮助。

我正在从 infoblox 数据库中获取一些数据并尝试在结果中进行搜索以查找主机条目的 mac 地址,该数据作为由以下代码生成的哈希存在于数组中:

use strict;
use Data::Dumper;
my @results = $session->get(
object => "Infoblox::DNS::Host",
name => "test.com.au",
ipv4addrs => ".*.",
view => "external"
);

我使用 '$_->ipv4addrs' 在数据结构的高层取消引用,然后使用以下代码循环输出:
foreach (@results) {
my @search = $_->ipv4addrs;
foreach (@search) {
print Dumper($_) . "\n";
}
}

它使用 Data::Dumper 打印以下输出:
$VAR1 = [
bless( {
'network' => '111.111.111.0/25',
'options' => [],
'dynamic' => 'false',
'__version' => '4.2r5-5-68691',
'VIEW_FUNCTION' => {
'remove' => '.com.infoblox.perl_api.Infoblox.DHCP.remove_fixed_address',
'search' => '.com.infoblox.perl_api.Infoblox.DHCP.search_fixed_address',
'add' => '.com.infoblox.perl_api.Infoblox.DHCP.insert_fixed_address',
'add_using_template' => '.com.infoblox.perl_api.Infoblox.DHCP.insert_fixed_address_using_template',
'get' => '.com.infoblox.perl_api.Infoblox.DHCP.get_fixed_address',
'modify' => '.com.infoblox.perl_api.Infoblox.DHCP.modify_fixed_address'
},
'ipv4addr' => '111.111.111.111',
'match_client' => 'MAC',
'mac' => '00:11:00:11:00:11',
'disable' => 'false',
'__type' => '.com.infoblox.perl_api.Infoblox.DHCP.FixedAddr'
}, 'Infoblox::DHCP::FixedAddr' )
];

但是,如果我尝试在 'foreach (@searh)' 循环中使用 '$_->mac' 调用引用,则会出现错误:
 "Can't call method "mac" on unblessed reference at ./connect_test.pl line nn."

我的编码技能在这一点上失败了,任何信息或方向将不胜感激。

最佳答案

每个项目存储在 @search是一个数组引用本身。

# If arrayref contains only one     | # If multiple objects expected
# Infoblox::DHCP::FixedAddr object | # inside @search
|
|
foreach ( @search ) { | foreach my $item ( @search ) {
|
my $obj = shift @$_; | foreach my $obj ( @$item ) {
my $mac = $obj->mac; |
} | my $mac = $obj->mac;
| }
| }

关于Perl:数组取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093256/

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