我想看看我的数组中是否有重复的项目,有超过 16.000 个,所以会自动化它可能有其他方法,但我从这个开始,嗯,除非有一个简单的命令,否则我想完成它。我正在做的是从一个数组移动并推送到另一个数组,这样,检查目标数组以查看它是否“在数组中”(就像 PHP 中有这样的命令)。
所以,我得到了这个子例程,它适用于文字,但不适用于变量。这是因为'eq'或我应该需要的任何东西。'sourcefile' 将包含目标数组的一个或多个单词。
// Here I just fetch my file
$listamails = <STDIN>;
# Remove the newlines filename
chomp $listamails;
# open the file, or exit
unless ( open(MAILS, $listamails) ) {
print "Cannot open file \"$listamails\"\n\n";
exit;
}
# Read the list of mails from the file, and store it
# into the array variable @sourcefile
@sourcefile = <MAILS>;
# Close the handle - we've read all the data into @sourcefile now.
close MAILS;
my @destination = ('hi', 'bye');
sub in_array
{
my ($destination,$search_for) = @_;
return grep {$search_for eq $_} @$destination;
}
for($i = 0; $i <=100; $i ++)
{
$elemento = shift @sourcefile;
if(in_array(\@destination, $elemento))
{
print "it is";
}
else
{
print "it aint there";
}
}
好吧,如果我没有在其中包含 $elemento,而是在其中放置了一个“hi”,它确实可以工作,并且我还打印了 $elemento 的值,它也是“hi”,但是当我放置变量时,它不起作用,并且那是因为'eq',但我不知道还能放什么。如果我输入 == 它会抱怨 'hi' 不是数值。