2013-04-25 52 views
0

我有两个数组@Results和@结果2它们之间有一个数字的群众。 e.g(12345678 182937439 18329741等)查找唯一值在两个数组 - Perl的

在两个数组,如果我将它们结合在一起,我能得到重复,我不想。我想比较两个数组,保留唯一值并逐一打印。

任何帮助,请将不胜感激......

+2

型'的perldoc -q duplicate'在命令提示符。 – 2013-04-25 14:47:09

回答

1

因此重复数据删除阵列。此代码从List::MoreUtilsuniq功能借来的:

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

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

完美!谢谢TLP! – user2320229 2013-04-25 15:00:17

+0

@ user2320229不客气。 – TLP 2013-04-25 15:04:07

+0

使用散列数值可有点玄乎,特别是如果这些值浮点。 '200','0200','200.0'和'2E2',在许多其他之中,可能都代表相同的值。即使值都保证是整数,它可能是最好的应用'{地图sprintf的“%d”,$ _} @ data'使一切均匀。 – Borodin 2013-04-25 15:32:34

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