我有一个文件处理程序,我正在寻找行中的匹配项并用新行替换匹配项。替换行发生在子例程中。
sub replace{
seek(FILE,0,0);
while(my $line= <FILE>){
if($line =~ m/SOMEMATCH/){
$line=~ s/SOMEMATCH/REPLACEMENT/;
print FILE $line;
}
}
}
当我在调用 &replace 后打印文件时,我发现错误的行被改变了,所以:
Line 1
Line 2
Line 3
SOMEMATCH
Line 4
Line 5
变成:
Line 1
Line 2
Line 3
SOMEMATCH
REPLACEMENT
Line 5
这是怎么回事?我如何解决它?