1

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

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 个字符?

4

1 回答 1

2

您需要使用chomp从停止列表中删除换行符:

my @stoplist = <$STOPLIST>;
chomp @stoplist;
于 2013-11-09T14:20:35.707 回答