Perl找到在数组中出现一次的元素

时间:2014-09-19 15:44:54

标签: perl

给定一个元素数组,如何找到仅在该数组中出现一次的元素:

my @array = qw(18 1 18 3 18 1 1 2 3 3);

结果应为:2

2 个答案:

答案 0 :(得分:7)

这是perlfaq5 - How can I remove duplicate elements from a list or array?

的变体

只需使用哈希计算元素,然后打印只能看一次的元素。

use strict;
use warnings;

my @array = qw(18 1 18 3 18 1 1 2 3 3);

my @nondup = do {
    my %count;
    $count{$_}++ for @array;
    grep {$count{$_} == 1} keys %count;
};

print "@nondup\n";

输出:

2

答案 1 :(得分:1)

您也可以通过简单的方式尝试。

use strict;
use warnings;
my @array = qw(7 8 7 5 18 1 18 3 18 1 1 2 3 3 4 5 6 7);
my $tm = "";
my %hash=();
foreach $tm(@array){    
    if(exists $hash{$tm}){
        $hash{$tm} = "";
    }
    else{
        $hash{$tm} = "$tm";     
    }
}
print join ("\n", values %hash);exit;