我正在编写一些代码来使用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[]' )
];发布于 2012-01-26 00:30:01
我不确定这些成员变量是否是公共的--我不熟悉使用的模块--所以这很可能违反了LocalLB::PoolMember::MemberMonitorStatus类的封装。你应该在使用之前检查一下。
for my $mms ( @{$VAR1->[0]} ) {
warn $mms->{monitor_status};
}最好检查MemberMonitorStatus类是否为成员监视器状态数组提供访问器,并可能提供迭代器。
通过将Dumper输出粘贴到Perl脚本中,使用基于监视数据结构的for循环代码进行了测试。
(编辑:基于Google缓存中的F5 webcentral文档的,它可能是底层代码中的一个简单结构,在Perl中公开为一个类,包含两个成员变量--但没有行为)。如果是这样的话,上述情况可能没有问题。)
https://stackoverflow.com/questions/9012372
复制相似问题