ファイルへのファイル ハンドラーがあり、一致する行を探して、一致する行を新しい行に置き換えています。行の置換はサブルーチンで行われます。
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
どうしたの?どうすれば修正できますか?