给定一个元素数组,如何找到仅在该数组中出现一次的元素:
my @array = qw(18 1 18 3 18 1 1 2 3 3);
结果应为: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;