我有一个数组,其中包含我想从文件的每一行中删除的单词。我使用的代码大致如下:
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个字符替换)?