【Perl】ファイルロック(排他処理)について語ろうat PHP【Perl】ファイルロック(排他処理)について語ろう - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト476:nobodyさん 03/08/27 11:26 某K氏のアクセス解析でFlock使うようにしようとしたのですが open(LOG, ">$logfile") or &error("Open Error : $logfile"); flock(LOG, 2); seek(LOG, 0, 2); my(@lines) = <LOG>; (if($agent =~ /MSIE 3/i) { $agent = 'MSIE 3'; }のような置換とか) while($max-1 < @lines) { pop(@lines); } unshift(@lines, "$agent<>$os<>$host<>$referer<>$hour<>$doc_uri<>\n"); unshift(@lines, "$addr\n"); print LOG @lines; close(LOG); こうすると書き込み時にログが一旦全部消えてしまい、 取得した最後のログ一行(先頭行に最終アクセスIPがあるので正確には二行)のみになってしまいます。 何処が悪いのでしょうか… 因みに元スクリプトではログを配列に読み込んだ時点で一旦閉じ、 処理後もう一度開いて書き込みという風になってたのですが、 これだと処理中に書き込まれたら駄目そうな気がしたので上のように書き換えたのです。 477:nobodyさん 03/08/27 19:09 >>476 lockどうこうより、while がおかしいのでは? $max-1 < @lines がどういう比較かわからんけど、自分で pop(@lines);して削除しちゃってるじゃないの 常にwhileが真で全行削除になってその後unshiftで2行追加してるだけでは? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch