程序在从文件中读出单词时表现出奇怪的行为

时间:2012-02-06 05:01:26

标签: perl

所以我有两个文件,一个包含我的文本,另一个我想包含过滤词。这里显示的那个应该是带有诅咒词的那个。基本上,我正在做的是迭代文本文件中的每个单词,并尝试将它们与诅咒单词进行比较。

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:没关系,我更愚蠢。我需要睡一觉,谢谢邪恶的奥托。

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. 
}