2012-01-26 25 views
4

BigIP :: iControlモジュールを使用してF5ロードバランサをクエリするためのコードを作成しています。Perlでblessオブジェクトを反復する

今は、特定の関数から戻ってくる変数にDumperを実行すると、次のような出力が得られます。

私はこのオブジェクトの繰り返しに多くの問題があります。

どのように私はこれを繰り返すことができ、各メンバのmonitor_statusを取り出すことができますか?

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

Object :: Iterateはオブジェクトに 'map'と' grep'を使うためのモジュールです。 –

答えて

4

私はそれらのメンバ変数が公開されているかどうかわからない - 私は使用されるモジュールに慣れていないんだ - そう、これはうまくLocalLB::PoolMember::MemberMonitorStatusクラスのカプセル化に違反する可能性があります。使用する前に確認してください。

for my $mms (@{$VAR1->[0]}) { 
    warn $mms->{monitor_status}; 
} 

MemberMonitorStatusクラスはおそらくアクセサ、および部材モニタステータスアレイの反復子を提供するかどうかを確認する方が良いであろう。

上記のテストは、Dumper出力をPerlスクリプトに貼り付けるだけでテストしました。forループのコードは、データ構造に基づいて実装されています。

(編集:、GoogleのキャッシュにF5 webcentralドキュメントに基づいて、それはMemberMonitorStatus、2つのメンバ変数を持つクラスとしてPerlで公開根底にあるコードでは、単純な構造体であることかもしれ - しかしなしもしそうなら、上記はおそらくOKです)。

関連する問題