ログの一部を消すPerlを考えています。

ここではソースを短くするために、ログの一部を消し去って
ログファイルに上書きするデータは $deta だけだとすると


open F, '+<a.log';
flock F,2;
$deta = <F>;//実際はここでもっと処理
truncate F,0;
seek F,0,0;
print F $deta;
close F;


と、


open IN, 'a.log';
flock IN,2;
open OUT, '>a.log';
flock OUT,2;
$deta = <IN>;//実際はここでもっと処理
print OUT $deta;
close OUT;
close IN;


の2つを考えました。
上のように 読み込み と 書き込み を同時にやった方がいいのか
下のように分けてやった方がいいのか教えてください。

ロックは flock を使って、普通レベルのロックが
できるぐらいでいいと思っているんだけど、
この flock の書き方でおかしいところがあれば
教えてください。

A 回答 (1件)

 何を基準にいいか悪いか決めればいいんでしょうか?(^_^;


 好みの問題だからどっちでもいいと思いますが。
 速度的には前者ですが、あとで見たとき分かりづらいので初心者の方には後者を薦めています。

 ちなみに flock はプラットフォームによって使えないこともあるので、

eval { flock(); };

 としておいた方がいいでしょう(使い方に特に問題はありません)。
    • good
    • 0
この回答へのお礼

eval { flock(); }; は知りませんでした。
ありがとうございます。

お礼日時:2001/11/01 20:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ