因此,我有兩個文件,一個包含我的文本,另一個包含過濾詞。這裏顯示的那個應該是帶有詛咒詞的那個。基本上,我在做的是遍歷文本文件中的每個單詞,並試圖將它們與詛咒單詞進行比較。程序在從文件中讀出單詞時表現出奇怪的行爲
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
但這裏是什麼地方出了錯。正如你所看到的,我已經打印了一份聲明,看看是否正確檢查了咒語。
hey what
is
dude what
is
what what
is
is what
is
up what
is
我從字面上不知道爲什麼會發生這種情況。請讓我知道我是否應該發佈更多代碼。
編輯:
AHA!感謝邪惡的奧托。我似乎對我之前提出的另一份印刷聲明感到困惑。現在問題依然存在:我想我沒有正確地檢查字符串的相等性。這裏就是過濾獲取調用:
foreach $w(@text_file_words)
{
if(filter($w) eq "BAD!")
{
#do something here
}
else { print "good!"; }
}
編輯2:沒關係,對我而言更愚蠢。我需要睡一覺,感謝邪惡的奧托。
交更多的代碼,比如什麼叫'filter'。另外,爲你的打印添加一些與衆不同的東西,以確保它不會與其他打印件產生混淆,如'print' - $ 0 - >'';' – 2012-02-06 05:15:56
請更改標題:Perl不是怪罪。你的程序有一個bug,而不是perl(至少在這種情況下)。 – dolmen 2012-02-06 13:57:32