【发布时间】:2011-07-18 18:58:26
【问题描述】:
我知道有一个类似的问题,但我从那里获取了提示并应用于我的代码以删除重复项。我得到的只是数组的最后一个元素。我看不出哪里出错了。请帮我找出我哪里出错了。
use strict;
use warnings;
use File::Find;
use Data::Dumper;
use List::MoreUtils qw/ uniq /;
my $localdir = 'images/p/';
my @filefound;
my @split1;
my $before;
find(sub {push @filefound, $File::Find::name if /.jpg$/ },$localdir);
for(@filefound) { print "$_ \n";}
foreach (@filefound){
my @result = split('_',$_);
@split1 = $result[0];
}
my %unique = ();
foreach my $item (@split1)
{
$unique{$item} ++;
}
my @myuniquearray = keys %unique;
foreach (@myuniquearray){ print "$_ \n";}
【问题讨论】:
-
my @myuniquearray = grep { $unique{$_} == 1 } keys %unique -
打印时我仍然得到最后一个元素! :(
-
当然可以。在循环中,每次迭代都会覆盖数组,所以当然只保存最后一次覆盖。
@split1 = $result[0];因此我之前对push的评论 -
是的,我得到了那个,谢谢!
标签: arrays perl duplicates unique duplicate-removal