所以我有两个文件,一个包含我的文本,另一个我想包含过滤词。这里显示的那个应该是带有诅咒词的那个。基本上,我正在做的是迭代文本文件中的每个单词,并尝试将它们与诅咒单词进行比较。
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
我完全不知道为什么会发生这种情况。如果我要发布更多代码,请告诉我。
编辑:
AHA!谢谢邪恶的奥托。我似乎对之前输入的另一个印刷语句感到困惑。现在问题仍然存在:我认为我没有正确检查字符串相等性。这里是调用过滤器的地方:
foreach $w( @text_file_words )
{
if(filter($w) eq "BAD!")
{
#do something here
}
else { print "good!"; }
}
编辑2:没关系,我更愚蠢。我需要睡一觉,谢谢邪恶的奥托。
答案 0 :(得分:1)
变化
$word_to_check = $_;
到
$word_to_check = shift;
答案 1 :(得分:0)
您需要在perl中将参数收集为数组...
sub myFunction{
($wordToCheck) = @_; #this is the arg array, if you have more than one arg you just separate what's between the parenthesis with commas.
}