Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Perl中迭代bless对象_Perl_Variables_Iteration - Fatal编程技术网

在Perl中迭代bless对象

在Perl中迭代bless对象,perl,variables,iteration,Perl,Variables,Iteration,我正在编写一些代码,以使用BigIP::iControl模块查询F5负载平衡器 现在,当对从特定函数返回的变量执行转储程序时,我得到以下输出 我在迭代这个对象时遇到了很多麻烦 我怎样才能反复讨论这个问题,只获取每个成员的monitor_状态 $VAR1 = [ bless( [ bless( { 'monitor_status' => 'MONITOR_STATUS_UP',

我正在编写一些代码,以使用BigIP::iControl模块查询F5负载平衡器

现在,当对从特定函数返回的变量执行转储程序时,我得到以下输出

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

我怎样才能反复讨论这个问题,只获取每个成员的monitor_状态

$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