2013-04-25 5 views
0

두 배열 @results와 @ results2 사이에 숫자가 매겨집니다. 예 : (12345678 182937439 18329741 등)두 배열에서 고유 한 값 찾기 - Perl

두 배열에서 내가 결합하면 나는 원하지 않는 중복을 얻을 수 있습니다. 두 배열을 비교하고, 고유 한 값을 유지하고 다른 값을 차례로 인쇄하고 싶습니다. 당신이 "독특한"생각 할 때마다

+2

유형'perldoc을 -q duplicate' 명령 프롬프트에서. –

답변

1

그래서 배열을 중복 제거 생각

어떤 도움을 주시면 감사하겠습니다 제발 .... List::MoreUtilsuniq 기능에서 차용이 코드 :

sub uniq { 
    my %seen; 
    grep { !$seen{$_}++ } @_; 
} 

my @unique = uniq(@results, @results2); 
+0

완벽한! TLP에 감사드립니다! – user2320229

+0

@ user2320229 여러분을 환영합니다. – TLP

+0

특히 값이 부동 소수점 인 경우 숫자 값에 해시를 사용하면 약간의 문제가 발생할 수 있습니다. '200','0200','200.0','2E2'는 모두 같은 값을 나타낼 수 있습니다. 값이 정수인 경우에도 모든 것을 균일하게 만들기 위해'map {sprintf '% d', $ _} @ data'를 적용하는 것이 가장 좋습니다. – Borodin

0

는 "해시"

#!/usr/bin/perl 

use strict; 
use warnings; 

my @a = qw(1 2 3); 
my @b = qw(3 4 5); 

my %x = map { $_ => 1 } @a, @b; 

print join ", ", keys %x; # 4, 1, 3, 2, 5