2016-11-03 2 views
2

n 개 요소 (n 이상)를 포함하는 배열이 주어진다면 해시 구조에서 각 요소를 키로 순서대로 참조하는 우아한 방법이 있습니까? 예를 들어Perl 해시 키 배열을 사용하여

:

my @foo = ('a','b','z'); 

이 식물 또는 유사한 것을 감안할 때, 나는 다음과 같은 접근하고 싶습니다 :이 간단 될 요소의 고정 된 수의 이었다면

$hash->{'a'}->{'b'}->{'z'} 

하지만, 런타임에 얼마나 될지는 알 수 없습니다 (확실히 6 ~ 7 개 이상은 될 수 없지만 그렇지 않은 경우는 확실하지 않습니다).

내가 생각할 수있는 유일한 패턴은 루프와 참조를 포함하고 있으며 어색해 보인다. 반 페이지를 차지하지 않거나 Data :: Dumper가 필요하지 않은 것이 있습니까? 디버깅하기 위해 오타가 있다면?

+0

참조 ['데이터 : Diver'] (https://metacpan.org/pod/Data::Diver)와 ['해시 :: Flatten'] ( –

+0

@ HåkonHægland 답장으로 의견을 말하면 받아 들일 것입니다. 당신이 펀치에 코로 바를 이길 것 같습니다. –

+2

고마워요,하지만 Choroba의 답변을 수락하십시오. 나는 경쟁에 있지 않다. –

답변

7

Data::Diver가 존재하는 이유입니다 :

#!/usr/bin/perl 
use warnings; 
use strict; 

use Data::Diver qw{ Dive }; 

my $hash = { a => { b => { z => 'HERE' } } }; 

my @foo = qw(a b z); 

print Dive($hash, @foo); 
+0

고마워. 거기에 뭔가 있어야한다고 생각했지만 일반적인 결과를 반환하지 않은 Google 검색을 알아낼 수 없었습니다. –

+0

'Dive ($ hash, map \ $ _, @foo) '는 더 안전합니다 (숫자 키를 처리 할 것입니다). – ikegami