2013-06-08 1 views

답변

0

여기에는 몇 가지 방법이 있습니다. 귀하의 문법은 귀하의 질문에 조금 떨어져 있으므로 내 변수 선언은 당신이 원하는 것이라고 가정 할 것입니다.

my @a1 = (1,2,3,4,5); 
my @a2 = (["a", "d", "f"], ["b", "c", "g"], ["y","e","t"], 
      ["g", "p", "d"], ["i", "o", "p"]); 
# Thus $a2[0][1] => "d", etc.                                   

#Perl 5.12 and higher you can use "each" on an array 
my %a3; 
while (my ($a1_index, $a1_value) = each @a1) { 
    $a3{$a1_value} = $a2[$a1_index]; 
} 
# Now @{$a3{4}} => ["g", "p", "d"] for example 

# Before 5.12 you would have to do something like this: 
my %a4; 
for my $i (0..$#a1) { 
    $a4{$a1[$i]} = $a2[$i]; 
} 
# Now @{$a4{4}} => ["g", "p", "d"] 
0
my @keys = (1,2,3,4,5); 
my @vals = (["a", "d", "f"], ["b", "c", "g"], ["y","e","t"], 
      ["g", "p", "d"], ["i", "o", "p"]); 

my $hash={}; 

for(my $i = 0; $i < scalar(@keys); $i++){ 

    $hash->{$keys[$i]}=$vals[$i]; 
} 

#print the resulted hash 
use Data::Dumper;print Dumper($hash); 

결과 같다 : $ VAR1 = { '4'=> [ 'g' 'P', 'D' ] '1'의 = > [ 'A', 'D', 'F' , '3'=> [ 'Y', 'E', 't' ] '2'=> [ 'B', 'C', 'g' ] '5'=> [ '나' 'O', 'P ' ] };

Perl 해시는 순서가 지정되지 않으므로 여기에 인쇄되는 순서에 대해 걱정할 필요가 없습니다. 필요한 경우 숫자 키를 기준으로 정렬 할 수 있습니다.

관련 문제