Итак, у меня есть два файла, один из которых содержит мой текст, а другой - файл фильтра.Предполагается, что показанный здесь тот, у которого есть ругательства.По сути, я перебираю каждое из слов в текстовом файле и пытаюсь сравнить их со словами проклятия.
sub filter {
$word_to_check = $_;
open ( FILE2, $ARGV[1]) || die "Something went wrong. \n";
while(<FILE2>) {
@cursewords = split;
foreach $curse (@cursewords) {
print $curse."\n";
if($word_to_check eq $curse) { return "BAD!";}
}
}
close ( FILE2 );
}
Вот «ругательства»:
what is
Вот текстовый файл:
hey dude what is up
Но вот что идет не так.Как вы можете видеть, я поместил оператор print, чтобы проверить, правильно ли проверяются проклятые слова.
hey what
is
dude what
is
what what
is
is what
is
up what
is
Я буквально понятия не имею, почему это могло произойти.Пожалуйста, дайте мне знать, если я должен отправить больше кода.
РЕДАКТИРОВАТЬ:
АГА!спасибо злой отто.Кажется, я запутался с другим заявлением о печати, которое я вставил ранее.Теперь проблема остается: я думаю, что я не проверяю на равенство строк правильно.Вот где фильтр вызывается:
foreach $w( @text_file_words )
{
if(filter($w) eq "BAD!")
{
#do something here
}
else { print "good!"; }
}
РЕДАКТИРОВАТЬ 2: Бессмысленно, больше глупости с моей стороны.Мне нужно немного поспать, спасибо, злой Отто.