首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl中迭代Perl对象

在Perl中迭代Perl对象
EN

Stack Overflow用户
提问于 2012-01-26 00:15:05
回答 1查看 786关注 0票数 5

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

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

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

我怎样才能迭代这个并且只为每个成员提取monitor_status呢?

代码语言:javascript
复制
$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[]' )
        ];
EN

回答 1

Stack Overflow用户

发布于 2012-01-26 00:30:01

我不确定这些成员变量是否是公共的--我不熟悉使用的模块--所以这很可能违反了LocalLB::PoolMember::MemberMonitorStatus类的封装。你应该在使用之前检查一下。

代码语言:javascript
复制
for my $mms ( @{$VAR1->[0]} ) {
    warn $mms->{monitor_status};
}

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

通过将Dumper输出粘贴到Perl脚本中,使用基于监视数据结构的for循环代码进行了测试。

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9012372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档