2012-12-20 41 views
9

配列の参照をperlのハッシュテーブルのkey : valueのペアの値として割り当てることはできますか?ハッシュperlの値の配列

+2

は、[データ構造の料理](HTTPを見てください.org/perldsc.html#HASHES-OF-ARRAYS)。 – mpe

答えて

21

はいです。バックスラッシュを使用して配列への参照を作成します。また、$hash{key}[0]であることを意味します

$array[0] = "foo"; 

:次のような変更を行うので、もしこれが、実際の配列にリンクされること

$hash{key} = \@array; 

注意を"foo"に設定します。

それはあなたが望むものではない場合、あなたは無名配列リファレンス[ ... ]を使用して値をコピーすることは:

$hash{key} = [ @array ]; 

また、あなたはこれを行うためには、アレイを通過する必要はありません。あなたは、単に直接割り当てることができます。

$hash{key} = [ qw(foo bar baz) ]; 

perldoc perlref

+0

多分自動化に関するいくつかの言葉?:)それは初心者のために知っておいてよいです – gaussblurinc

+0

@loldop初心者のために知っていることはたくさんありますが、ここでは簡単なスカラー値が割り当てられています。 – TLP

+0

あなたは "eq 'foo'" not "== 'foo'"を意味すると思います。 – mswanberg

9

はいで参照を行うことについては、こちらをご覧ください。ただこれらのいずれかを実行し、そのようなデータ構造にアクセスするためのいくつかの基本的なルールのhttp://perlmonks.org/?node=References+quick+referenceを参照してください、それを作成するために://perldoc.perl:

%hash = ('somekey' => \@arrayvalue); 
$hash{'somekey'} = \@arrayvalue; 
%hash = ('somekey' => [ ... ]); 
0
use Data::Dumper; @name=('5/17', 
    '5/17','5/17','5/17','5/17','5/17','5/17','5/17'); @status_flags=('U 
    H L','U C','U H L','U C','U C','U H L','U C', 'U H L'); 
    @ip_address=('192.168.0.11','192.168.0.2','192.168.0.13','192.168.0.0','192.168.0.3','192.168.0.12','192.168.0.4','192.168.0.14'); @dp_id=('0','0','0','0','0','0','0','0'); 
    @ip_prefix_length=('32','32','32','24', '32', '32','32','32'); 

    for ($value=0;$value<=5;$value++) { 


    $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'name'=>"$name[$value]"}; 
      $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'dp-id'=>"$dp_id[$value]"}; 
      $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'ip-address'=>"$ip_address[$value]"}; 
      $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'ip-prefix-length'=>"$ip_prefix_length[$value]"}; 


    $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'ip-gateway'=>'*'}; 




    } 
     print Dumper \%keyvals; 

    Each array value assign into hash value. $var1= { 
       'Response' => { 
          'extension-ip-route' => { 
                'status-flags' => 'U H L ' 
                    , 
                'ip-gateway' => '*', 
                'name' => '0/2', 
                'ip-address' => '192.168.20.11', 
                'dp-id' => '0', 
                'ip-prefix-length'=>'32' 

                } 
          } 
      }; 
+0

正しい形式と読みやすいように回答を編集する必要があります。 – AeroBuffalo

関連する問題