在Perl中迭代bless对象
我正在编写一些代码,以使用BigIP::iControl模块查询F5负载平衡器 现在,当对从特定函数返回的变量执行转储程序时,我得到以下输出 我在迭代这个对象时遇到了很多麻烦 我怎样才能反复讨论这个问题,只获取每个成员的monitor_状态在Perl中迭代bless对象,perl,variables,iteration,Perl,Variables,Iteration,我正在编写一些代码,以使用BigIP::iControl模块查询F5负载平衡器 现在,当对从特定函数返回的变量执行转储程序时,我得到以下输出 我在迭代这个对象时遇到了很多麻烦 我怎样才能反复讨论这个问题,只获取每个成员的monitor_状态 $VAR1 = [ bless( [ bless( { 'monitor_status' => 'MONITOR_STATUS_UP',
$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[]' )
];
我不确定这些成员变量是否是公共的——我不熟悉所使用的模块——因此这很可能会违反
LocalLB::PoolMember::MemberMonitorStatus
类的封装。你应该在使用前检查一下
for my $mms ( @{$VAR1->[0]} ) {
warn $mms->{monitor_status};
}
最好检查MemberMonitorStatus类是否为成员监视器状态数组提供访问器,也可能提供迭代器
通过将转储程序输出粘贴到一个Perl脚本中,并在查看数据结构的基础上实现for循环代码,就可以简单地测试上述内容
(编辑:基于Google缓存中的F5 webcentral文档,MemberMonitorStatus可能是底层代码中的一个简单结构,在Perl中作为一个包含两个成员变量的类公开,但没有任何行为。如果是这样,上述内容可能没有问题。)Object::Iterate是一个模块,允许您对对象使用
map
和grep
。