首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl:访问和处理数组中的对象

Perl:访问和处理数组中的对象
EN

Stack Overflow用户
提问于 2016-06-21 14:14:56
回答 1查看 142关注 0票数 1

我尝试处理由get_pool_member_object_status_($pool)生成的以下数组

来自($pool)

代码语言:javascript
复制
$VAR1 = [
      [
        bless( [
                 bless( {
                          'member' => bless( {
                                             'address' => '192.168.100.141',
                                             'port' => '80'
                                           }, 'Common::IPPortDefinition' ),
                          'object_status' => bless( {
                                                    'availability_status' => 'AVAILABILITY_STATUS_GREEN',
                                                    'status_description' => 'Pool member is available',
                                                    'enabled_status' => 'ENABLED_STATUS_ENABLED'
                                                  }, 'LocalLB::ObjectStatus' )
                        }, 'LocalLB::PoolMember::MemberObjectStatus' ),
                 bless( {
                          'member' => bless( {
                                             'address' => '192.168.100.142',
                                             'port' => '80'
                                           }, 'Common::IPPortDefinition' ),
                          'object_status' => bless( {
                                                    'availability_status' => 'AVAILABILITY_STATUS_GREEN',
                                                    'status_description' => 'Pool member is available',
                                                    'enabled_status' => 'ENABLED_STATUS_ENABLED'
                                                  }, 'LocalLB::ObjectStatus' )
                        }, 'LocalLB::PoolMember::MemberObjectStatus' ),
                 bless( {
                          'member' => bless( {
                                             'address' => '192.168.100.143',
                                             'port' => '80'
                                           }, 'Common::IPPortDefinition' ),
                          'object_status' => bless( {
                                                    'availability_status' => 'AVAILABILITY_STATUS_GREEN',
                                                    'status_description' => 'Pool member is available',
                                                    'enabled_status' => 'ENABLED_STATUS_ENABLED'
                                                  }, 'LocalLB::ObjectStatus' )
                        }, 'LocalLB::PoolMember::MemberObjectStatus' ),
                 bless( {
                          'member' => bless( {
                                             'address' => '192.168.100.144',
                                             'port' => '80'
                                           }, 'Common::IPPortDefinition' ),
                          'object_status' => bless( {
                                                    'availability_status' => 'AVAILABILITY_STATUS_GREEN',
                                                    'status_description' => 'Pool member is available',
                                                    'enabled_status' => 'ENABLED_STATUS_ENABLED'
                                                  }, 'LocalLB::ObjectStatus' )
                        }, 'LocalLB::PoolMember::MemberObjectStatus' )
               ], 'LocalLB::PoolMember::MemberObjectStatus[]' )
      ]
    ];

我不知道该怎么做。我试过了perldsc的几个例子。其中的例子主要涉及哈希数组。但上面的数组是.?我甚至不知道这是什么阵列。有人能给我指明正确的方向吗?

因此,例如,如何访问"object_status"->"availability_status""member"->"address"

辛巴伯。这是我从Data::Printer:获得的输出

代码语言:javascript
复制
[
[0] [
    [0] LocalLB::PoolMember::MemberObjectStatus[]  {
        public methods (0)
        private methods (0)
        internals: [
            [0] LocalLB::PoolMember::MemberObjectStatus,
            [1] LocalLB::PoolMember::MemberObjectStatus,
            [2] LocalLB::PoolMember::MemberObjectStatus,
            [3] LocalLB::PoolMember::MemberObjectStatus
        ]
    }
]

]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-22 07:57:45

所以您正在尝试访问'availability_status''address'

我没有遍历整个对象,但是有了这些代码,我就能够打印所需的字段。

代码语言:javascript
复制
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;


my $obj = [
      [
        bless( [
                 bless( {
                          'member' => bless( {
                                             'address' => '192.168.100.141',
                                             'port' => '80'
                                           }, 'Common::IPPortDefinition' ),
                          'object_status' => bless( {
                                                    'availability_status' => 'AVAILABILITY_STATUS_GREEN',
                                                    'status_description' => 'Pool member is available',
                                                    'enabled_status' => 'ENABLED_STATUS_ENABLED'
                                                  }, 'LocalLB::ObjectStatus' )
                        }, 'LocalLB::PoolMember::MemberObjectStatus' ),
                 bless( {
                          'member' => bless( {
                                             'address' => '192.168.100.142',
                                             'port' => '80'
                                           }, 'Common::IPPortDefinition' ),
                          'object_status' => bless( {
                                                    'availability_status' => 'AVAILABILITY_STATUS_GREEN',
                                                    'status_description' => 'Pool member is available',
                                                    'enabled_status' => 'ENABLED_STATUS_ENABLED'
                                                  }, 'LocalLB::ObjectStatus' )
                        }, 'LocalLB::PoolMember::MemberObjectStatus' ),
                 bless( {
                          'member' => bless( {
                                             'address' => '192.168.100.143',
                                             'port' => '80'
                                           }, 'Common::IPPortDefinition' ),
                          'object_status' => bless( {
                                                    'availability_status' => 'AVAILABILITY_STATUS_GREEN',
                                                    'status_description' => 'Pool member is available',
                                                    'enabled_status' => 'ENABLED_STATUS_ENABLED'
                                                  }, 'LocalLB::ObjectStatus' )
                        }, 'LocalLB::PoolMember::MemberObjectStatus' ),
                 bless( {
                          'member' => bless( {
                                             'address' => '192.168.100.144',
                                             'port' => '80'
                                           }, 'Common::IPPortDefinition' ),
                          'object_status' => bless( {
                                                    'availability_status' => 'AVAILABILITY_STATUS_GREEN',
                                                    'status_description' => 'Pool member is available',
                                                    'enabled_status' => 'ENABLED_STATUS_ENABLED'
                                                  }, 'LocalLB::ObjectStatus' )
                        }, 'LocalLB::PoolMember::MemberObjectStatus' )
               ], 'LocalLB::PoolMember::MemberObjectStatus[]' )
      ]
    ];

print Dumper($obj->[0]->[0]->[0]->{member}->{address});
print Dumper($obj->[0]->[0]->[0]->{object_status}->{availability_status});
print Dumper($obj->[0]->[0]->[1]->{member}->{address});
print Dumper($obj->[0]->[0]->[1]->{object_status}->{availability_status});
print Dumper($obj->[0]->[0]->[2]->{member}->{address});
print Dumper($obj->[0]->[0]->[2]->{object_status}->{availability_status});
print Dumper($obj->[0]->[0]->[3]->{member}->{address});
print Dumper($obj->[0]->[0]->[3]->{object_status}->{availability_status});

输出:

代码语言:javascript
复制
$VAR1 = '192.168.100.141';
$VAR1 = 'AVAILABILITY_STATUS_GREEN';
$VAR1 = '192.168.100.142';
$VAR1 = 'AVAILABILITY_STATUS_GREEN';
$VAR1 = '192.168.100.143';
$VAR1 = 'AVAILABILITY_STATUS_GREEN';
$VAR1 = '192.168.100.144';
$VAR1 = 'AVAILABILITY_STATUS_GREEN';

希望这会有所帮助,现在您应该能够使用循环遍历此数据结构。

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

https://stackoverflow.com/questions/37946882

复制
相关文章

相似问题

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