最近のUNIXサーバーは、flockが使えるようになっています。 したがって従来のようにファイルを作ってロックかける方法は、 ファイル生成速度の問題や、データファイルの消去防止を徹底する 意味から、flockを使った方が安定していると思われます。 使い方は、以下のように形になりますが、使い方に注意が必要です。 open(OUT, "> outfile.txt"); flock(OUT, 2); print OUT "........"; flock(OUT, 8); close(OUT); ひとつ目は open() を行った時点で、ロックを行うよりも前にファイルサイズを 0 にしてしまう点。 ふたつ目は、print による書き込みキャッシュがフラッシュされる前に flock(OUT, 8) でロックを解除してしまっている点です。 上記のコードは次のように書かなくてはなりません。 close() を行った時やプログラムが終了する時には自動的にロックは解除される。 (ただし、2つ目の問題は最近の perl では改善されている) open(OUT, "+< outfile.txt"); eval {flock(OUT, 2);}; truncate(OUT, 0); seek(OUT, 0, 0); print OUT "........"; close(OUT); 読み込みロック open(IN, "outfile.txt"); eval {flock(IN, 2);}; @line = ; close(IN);