配列にアイテムが繰り返されているかどうかを確認したいのですが、16.000を超えているので、自動化します。他の方法もあるかもしれませんが、これから始めました。簡単なコマンドがない限り、これを終了したいと思います。私が行っているのは、ある配列から別の配列にシフトしてプッシュすることです。このようにして、宛先配列が「配列内」にあるかどうかを確認します(PHPにそのようなコマンドがあるように)。
だから、私はこのサブルーチンを手に入れました、そしてそれはリテラルで動作します、しかしそれは変数では動作しません。それは「eq」または私が必要とするもののためです。'sourcefile'には、宛先配列の1つ以上の単語が含まれます。
// 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」を入れると機能し、「hi」でもある$ elementoの値を出力しましたが、変数を入れると機能しません。これは「eq」のせいですが、他に何を入れるべきかわかりません。==とすると、「hi」は数値ではないと文句を言います。