2016-06-21 2 views
1

는 내가이 일을하는 방법을 알아낼 수 http://search.cpan.org/~ltp/BigIP-iControl/lib/BigIP/iControl.pm#get_pool_member_object_status_($pool)펄 : 액세스 및

$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[]') 
     ] 
    ]; 

에서 get_pool_member_object_status_($pool)

에 의해 생성 된 다음과 같은 배열을 처리하려고 배열의 개체를 처리. 나는 perldsc에서 몇 가지 예제를 시도했다. 그 예들은 해시 배열과 관련이있다. 하지만 위의 배열은 ...? 나는 이것이 어떤 배열인지 알지 못한다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

그래서 예를 들어 어떻게 "member"->"address"

들으 simbabque의 "object_status"->"availability_status"에 액세스 않습니다. 이것은 내가 그래서 당신은 액세스하려고 Data::Printer:

[ 
[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 
     ] 
    } 
] 

]

+0

'LocalLB :: PoolMember :: MemberObjectStatus'유형의 객체 배열을 포함하는 'LocalLB :: PoolMember :: MemberObjectStatus []'유형의 객체 배열처럼 보입니다. – SparkeyG

+1

실제로 '축복 'Data :: Dumper로 덤핑 될 때 그것들에 붙어있는 것들은 객체들이다. 해당 메서드가 어떤 종류인지 모르는 경우 [Data :: Printer] (http://p3rl.org/Data::Printer)를 사용하십시오. 상속, 가치 및 그것이 할 수있는 방법을 포함하여 객체에 대한 모든 것을 알려줍니다. 당신은 그 깊이의 수준에서 그들을 표시하기 위해 옵션으로 바이올린을해야 할 수도 있습니다,하지만 그건 사소한 일입니다. – simbabque

+1

나는 그 클래스들이 어디서 왔는지를 이해하려고 노력했다. [BigIP :: iControl의 출처] (https://metacpan.org/source/LTP/BigIP-iControl-0.098/lib/BigIP/iControl.pm#L518)). ** 조심해, 아마도 이것은 NSFW 일 것이다 ** ** – simbabque

답변

1

에서 얻을 출력되는 'availability_status''address'
나는이 모든 오브젝트를 통과하지 않았지만,이 코드에 난을 인쇄 할 수 있어요 필수 입력 사항.

#!/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}); 

출력 :이 도움이 지금 당신이 루프가이 데이터 구조를 탐색 할 수 있어야한다

$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'; 

희망.