perlでファイルハンドルの使い方がイマイチ理解出来ていないのですが、
以下のようにdata.txtに入っているもので、
行を削除したい時に、残留物が残るのですが、どうすればうまくいくでしょうか?
正しい使い方を教えて頂けると助かります。
宜しくお願い致します。
▼data.txtの内容
A組<>井上<>男<>172cm<>
B組<>山田<>女<>150cm<>
A組<>鈴木<>男<>180cm<>
C組<>佐藤<>男<>169cm<>
▼特定の行を消す(C組の人を消す)
open(FH,"+< data.txt"); flock(FH, 2); while (<FH>) { @log = split(/<>/,$_); if($log[0] eq "C組"){ $data .= ""; }else{ $data .= "$_"; } } seek(FH, 0, 0); print FH "$data"; close(FH);
▼実行後のdata.txtの内容
A組<>井上<>男<>172cm<>
B組<>山田<>女<>150cm<>
A組<>鈴木<>男<>180cm<>
C組<>佐藤<>男<>169cm<>
と消えていなかったり、C組が途中の行にあると
最後の行に
<>男<>180cm<>
など中途半端なデータが残ります。
+<
はファイル内容をクリアしないので、行が残ってしまうと思うので、
本当はseekの前にファイルをクリアするものがあればうまくいくのかなと思いますが、
そもそも根本的に考え方が間違っている気がします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/14 15:00
2019/03/14 15:15
2019/03/14 23:32
2019/03/20 14:33