2011-12-17 3 views
1

에서 문자열을 빌드 나는 내가 좋아하는 것이 무엇 다음2 해시

hash1: 
key  value 
part0  company0 
part1  company1 
part2  company2 

hash2: 
key  value 
part0  2B 
part1  4B 
part2  6B 

추천 해시를이 "part0의 company0 2B, PART1의 company1 4B, 파트 2의 company2처럼 2 해시를 사용하여 문자열을 구축하는 것입니다해야 6B "(따옴표 제외)

어떻게하면됩니까?

답변

1

글쎄, 당신은 두 해시가 동일한 키가 보장하고 가정, 당신은 다음과 같이 할 수 있습니다 : 당신이 중 하나를 얻을 수있는 방법을 찾아야합니다 서로 다른 키를해야 할 수도

foreach my $key (sort keys %hash1) { 
    print "$key $hash1{$key} $hash2{$key}\n"; 
} 

을 목록 조합 또는 교차점, 아마도 List :: Compare에 대한 함수가있을 것입니다.

+1

아마도'print' 문에'% key' 대신'$ key'를 쓰려고했을 것입니다. –

+0

[List :: MoreUtils] (http://p3rl.org/List::MoreUtils)의 [uniq/distinct] (http://p3rl.org/List::MoreUtils#uniq-LIST)는'uniq (키 % hash1, 키 % hash2)'. –

1
my $answer = ""; 
my $pad = ""; 
foreach my $key (sort keys %hash1) 
{ 
    $answer .= "$pad$key $hash1{$key} $hash2{$key}\n"; 
    $pad = ", "; 
} 
print "$answer\n"; 

hash2은 (는 별도의 항목을 포함 할 수 있지만 적은 항목을 포함 할 수 없습니다) hash1에있는 각 키에 대해 하나의 간단한 항목이 포함되어 있다고 가정합니다.