2017-11-30 1 views
2

현재 참조 된 해시 및 해시에 포함 된 키 배열이 있습니다. 내 배열 배열에 해당하는 값의 배열을 가져 오려고합니다. perl에서 참조 된 해시와 키 배열에서 값 배열을 효율적으로 가져 오는 방법은 무엇입니까?

나는 여러 줄에서이 작업을 수행하는 방법을 알고 :

# Getting hash reference and array of keys. 
my $hashRef = { 
    one => 'foo', 
    two => 'bar', 
    three => 'baz' 
}; 
my @keys = ('one', 'three'); 

# Getting corresponding array of values. 
my @values; 
foreach my $key (@keys) { 
    push @values, $hashRef->{$key}; 
} 

는 그러나, 나는 루프를 사용하지 않는 더 나은 방법이있을 것으로 생각합니다. 하지만 불행히도 나는 그것을 파악할 수 없다. 어떻게 효과적으로 참조 된 해시와 키 배열에서 값의 배열을 가져올 수 있습니까? 가능하다면 한 줄에 이상적으로? 쉽게

답변

5

:

my @values = @$hashRef{@keys}; 

또는 펄 5.24+에 :

my @values = $hashRef->@{@keys}; 

또는 5.20+ 펄에 몇 가지 추가 기능을 활성화하여 :

use feature qw(postderef); 
no warnings qw(experimental::postderef); 

my @values = $hashRef->@{@keys}; 

이 활용 사실 %hash의 복수 키 ("슬라이스")에 대한 값을로 가져올 수 있습니다. 0 구문. 먼저 역 참조해야합니다. 자세한 내용은 perldoc을 참조하십시오.

+0

동일하게 작동합니까? 나는 화살표 표기법을 사용하는 것을 선호한다 : @ {$ hashRef -> {@ keys}} –

+0

아하나. 그러나 이것은 여전히 ​​상당 할 것이다 : @ {$ hashRef} {@ keys} –

+0

. 너는 그것을 가지고있다. – mwp

관련 문제