2015-02-03 3 views
0

저는 Perl을 처음 사용하고 해시에 대해 약간의 아이디어가 있습니다. 다음과 같이, 해쉬 배열 (HoAoHoAoHoAoH)의 해시 배열의 해시 배열의 해시가 있습니다.Perl에서 HoAoHoAoHoAoH 구문 분석

%my_hash = (
    key00 => 'value00', 
    key01 => [ 
     { key10 => 'value10', 
      key11 => 'value11', 
      key12 => [ 
       { key20 => 'value20', 
        key21 => 'value21', 
        key22 => [ 
         { key30 => 'value30', 
          key31 => [ 
           { color => 'blue', quantity => 10, boxes => [0,1,3] }, 
           { color => 'red', quantity => 2, boxes => [2,3] }, 
           { color => 'green', quantity => 5, boxes => [0]  }, 
          ], 
         }, 
        ], 
       }, 
      ] 
     } 
    ] 
); 

"색상", "수량"및 "상자"에 액세스하는 가장 쉬운 방법은 무엇입니까? 또한 10 + 2 + 5 (quantity0 + quantity1 + quantity2)와 같은 "quantity"로 산술 연산을 수행해야합니다.

+1

이 중첩 된 데이터 구조를 사용하기 시작할 때 대신 개체를 사용하는 것이 좋습니다. Perl 객체 지향 프로그래밍 튜토리얼, ['perlootut'] (http://perldoc.perl.org/perlootut.html)을보십시오. – ThisSuitIsBlackNot

답변

0

이것은 XY 문제와 비슷합니다. 여기서 무엇을 해결하려고합니까?

당신은 다음과 같은 데이터 구조의 요소에 액세스 할 수 있습니다

print $my_hash{key01}[0]{key12}[0]{key22}[0]{key31}[0]{color},"\n"; 

당신은 또한 함께 바닥 요소를 반복 할 수

foreach my $something (@{ $my_hash{key01}[0]{key12}[0]{key22}[0]{key31} }) { 
    print $something->{'color'}; 
    print $something->{'quantity'} 
} 

그러나 이것은 진짜 문제처럼 보이지 않는 - 당신은 무엇입니까 실제로 달성하려고합니까? XML 또는 유사 구문을 구문 분석하려고하는 것으로 추측 할 수 있습니다.이 경우 거의 확실한 접근 방법이 있습니다.

+0

감사합니다. 이것은 가장 안쪽 배열의 요소를 가져 오기 위해 구문 분석해야하는 "구성"파일입니다. – sputnik

+2

설정 파일의 형식이 맞습니까? 그게 기차 난파선이고, 정말로 사람들이 그런 종류의 헐벗음을하지 않도록 노력해야합니다. – Sobrique

+0

불행히도 예. 그리고 내 손안에도 있지 않습니다. :( – sputnik