2012-12-20 4 views
9

배열의 참조를 key : value 쌍의 해시 테이블 쌍의 값으로 지정할 수 있습니까?해시 perl 값의 배열

+2

에서 [데이터 구조 요리 책]에서보세요 (HTTP : //perldoc.perl 단지 다음 중 하나를 수행, 이러한 데이터 구조를 액세스하기위한 몇 가지 기본 규칙 http://perlmonks.org/?node=References+quick+reference을 볼 수 있지만, 그것을 만들 .org/perldsc.html # 해시 배열). – mpe

답변

21

예. 백 슬래시를 사용하여 배열에 대한 참조를 만듭니다이 실제 배열에 연결됩니다

$hash{key} = \@array; 

주를, 그래서 당신이 같은 변화를 수행하는 경우 :

$array[0] = "foo"; 

$hash{key}[0]는 것을 의미한다 그 "foo"으로 설정하십시오. 이 원하지 않을 경우

, 당신은 익명의 배열 참조 [ ... ]를 사용하여 값을 복사 할 수 있습니다 :

$hash{key} = [ @array ]; 

는 또한,이 작업을 수행하기 위해 배열을 통해 갈 필요가 없습니다. 당신은 단순히 직접 할당 할 수

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

perldoc perlref

+0

아마 autovivification에 대한 몇 가지 단어가 있나? :) 초보자를위한 좋은 정보 – gaussblurinc

+0

@loldop 글쎄, 많은 것들이 초보자를위한 좋은 정보이지만 여기에서는 자동 벽화에 대해서 이야기하는 것이 아니라 단순한 스칼라 값을 할당하는 것입니다. – TLP

+0

나는 당신이 "eq 'foo'"not "== 'foo'"라고 생각했다. " – mswanberg

9

에서 만드는 참조에 대해 자세히 알아보십시오.

%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