可能重复:
What's the most efficient way to check for duplicates in an array of data using Perl?
如何在数组中找到重复值?
这是我的阵列:
@arr - ("one","two","one","three","two");
输出将是:
one
two
代码:
while (<RFH>) {
chomp;
@arr = split(/\|/,$_);
push(@arr1,$arr[4]."\n");
}
答案 0 :(得分:8)
一次性解决方案:
my %seen = ();
@dup = map { 1==$seen{$_}++ ? $_ : () } @list;
答案 1 :(得分:1)
my %cnt;
$cnt{$_}++ for @arr;
print "$_\n" for grep $cnt{$_} > 1, keys %cnt;
答案 2 :(得分:1)
使用哈希的替代方式:
my @arr = ("one", "two", "one", "three", "two");
my %arr_counts;
for (@arr) { $arr_counts{$_}++ };
my @dupes = grep { $arr_counts{$_} > 1 } keys %arr_counts;
请注意,哈希不维护排序顺序。它不是随机的,所以如果你使用相同的列表运行,你将获得相同的结果,但订单将在实践中改变。