2013-10-30 2 views
2

필자는 perl에 다소 익숙하며 서브 루틴에서 배열 해시를 전달할 수있는 방법을 묻고 싶습니다. 보다 구체적으로, 나는 배열 서브 루틴에서 배열 해시를 전달하는 방법은 무엇입니까?

my %records = (a => [ qw/ A B C/], b => [ qw/ C D E A/], c => [ qw/ A C E/],);

의 해시를하고 난 해시에있는 모든 배열에

use Array::Utils qw(:all) 
#unique union 
my @unique = unique(array1, array2, ..., arrayX); 

을 적용 할. 나는 입력으로 해시를 가지며 그것에있는 모든 배열의 고유 한 조합을 반환하는 서브 루틴을 만들려고합니다. 어떤 도움을 많이 주시면 감사하겠습니다. 사전에

감사합니다, 타 노스

당신은 통과해야

답변

4

values (이 배열 참조이다)하고 역 참조 (당신은 map 함수 내에서의 @ 기호를 앞에 붙이는, 아래 참조 수) :

use Array::Utils qw(:all); 
my %records = (a => [ qw/ A B C/], b => [ qw/ C D E A/], c => [ qw/ A C E/],); 
my @unique = unique(map {@$_} values %records); 
print join(' ',@unique); #will print "A B C D E" 
+0

이 psxls에 많은 시간을 내 주셔서 감사합니다. 잘 작동합니다! – thmourikis

+0

Welcome to StackOverflow Thano :) – psxls

관련 문제