Jim*_*Jim 5 iteration variables perl
我正在编写一些代码来使用 BigIP::iControl 模块查询 F5 负载均衡器。
现在,当我对从特定函数返回的变量执行转储器时,我得到以下输出。
我在迭代这个对象时遇到了很多麻烦。
我怎样才能迭代这个并只取出每个成员的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[]' )
];
Run Code Online (Sandbox Code Playgroud)
我不确定这些成员变量是否是公共的 - 我不熟悉所使用的模块 - 所以这很可能违反了类的封装LocalLB::PoolMember::MemberMonitorStatus。使用前应检查。
for my $mms ( @{$VAR1->[0]} ) {
warn $mms->{monitor_status};
}
Run Code Online (Sandbox Code Playgroud)
最好检查 MemberMonitorStatus 类是否提供访问器,并且可能还提供成员监视器状态数组的迭代器。
上面的测试只需将 Dumper 输出粘贴到 Perl 脚本中,并使用基于观察数据结构实现的 for 循环代码即可。
(编辑: 根据 Google 缓存中的 F5 webcentral 文档,MemberMonitorStatus 可能是底层代码中的一个简单结构,在 Perl 中公开为具有两个成员变量的类 - 但没有行为。如果是这样,则上面的内容可能是好的。)