gpt4 book ai didi

perl - 在 Perl 中迭代 bless 对象

转载 作者:行者123 更新时间:2023-12-01 01:21:22 33 4
gpt4 key购买 nike

我正在编写一些代码来使用 BigIP::iControl 模块查询 F5 负载均衡器。

现在,在对从特定函数返回的变量执行 Dumper 时,我得到以下输出。

我在迭代这个对象时遇到了很多麻烦。

我怎么能去迭代这个并且只为每个成员取出 monitor_status ?

$VAR1 = [
bless( [
bless( {
'monitor_status' => 'MONITOR_STATUS_UP',
'member' => bless( {
'address' => '127.0.0.0.1',
'port' => '8085'
}, 'Common::IPPortDefinition' )
}, 'LocalLB::PoolMember::MemberMonitorStatus' ),
bless( {
'monitor_status' => 'MONITOR_STATUS_UP',
'member' => bless( {
'address' => '127.0.0.0.1',
'port' => '8085'
}, 'Common::IPPortDefinition' )
}, 'LocalLB::PoolMember::MemberMonitorStatus' ),
bless( {
'monitor_status' => 'MONITOR_STATUS_DOWN',
'member' => bless( {
'address' => '127.0.0.0.1',
'port' => '8085'
}, 'Common::IPPortDefinition' )
}, 'LocalLB::PoolMember::MemberMonitorStatus' ),
bless( {
'monitor_status' => 'MONITOR_STATUS_DOWN',
'member' => bless( {
'address' => '127.0.0.0.1',
'port' => '8085'
}, 'Common::IPPortDefinition' )
}, 'LocalLB::PoolMember::MemberMonitorStatus' )
], 'LocalLB::PoolMember::MemberMonitorStatus[]' )
];

最佳答案

我不确定这些成员变量是否是公共(public)的——我不熟悉使用的模块——所以这很可能违反了 LocalLB::PoolMember::MemberMonitorStatus 的封装。类(class)。您应该在使用前检查。

for my $mms ( @{$VAR1->[0]} ) {
warn $mms->{monitor_status};
}

最好检查 MemberMonitorStatus 类是否提供访问器,并且可能为成员监视器状态数组提供迭代器。

上面的测试通过将 Dumper 输出粘贴到 Perl 脚本中进行了简单的测试,其中 for 循环的代码是基于观察数据结构实现的。

(编辑: 基于 Google 缓存中的 F5 webcentral 文档,可能 MemberMonitorStatus 是底层代码中的一个简单结构,在 Perl 中作为具有两个成员变量的类公开 - 但没有行为。如果是这样,上面可能没问题。)

关于perl - 在 Perl 中迭代 bless 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9012372/

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