Perl - regexp没有被替换

时间:2013-11-09 14:16:43

标签: regex perl

我有一个数组,其中包含我想从文件的每一行中删除的单词。我使用的代码大致如下:

my $INFILE;
my $OUTFILE;
my $STOPLIST;
open($INFILE, '<', $ARGV[0]);
open($STOPLIST, '<', "stop.txt");
open($OUTFILE, '>', $ARGV[1]);

my @stoplist = <$STOPLIST>;

my $line;
my $stopword;
while (<$INFILE>) {
    $line = $_;
    $line =~ s/\[[0-9]*\] //g;
    $line =~ s/i\/.*\/; //g;
    foreach (@stoplist) {
        $stopword = $_;
        $line =~ s/${stopword}//g;
    }
    print $OUTFILE lc($line);
}

但是,停止列表中的单词仍会显示在输出文件的文本中,这表示$line =~ s/${stopword}//g;行没有像我预期的那样完成工作。

如何使这项工作(即确保输入文本中出现的停止列表中的所有单词都被输出中的0个字符替换)?

1 个答案:

答案 0 :(得分:2)

您需要使用chomp

从停用列表中删除换行符
my @stoplist = <$STOPLIST>;
chomp @stoplist;