重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

open(DB,"$file") ;でデータを開くだけでデータが破損することはありますか?


たとえば

open(DB,"$file") ;
flock(DB,2);
@lines = <DB>;
close(DB);
flock(DB,8);

のように@linesにデータを格納します。

$fileに上書きはしません。

上記ファイル操作だけで、同時接続があったときにファイルが破損することはありますか?

ファイルロック関数を付けた方がいいですか?

A 回答 (1件)

基本、読むだけでファイルが壊れることはありません。


が、このプログラムがファイルを破壊する可能性はあります。

・ミス、または故意で $fileの先頭が'>'になった場合。上書きしないつもりが新規上書きになってしまいます。
よほど古いバージョンで無いのなら、 openにはモードとファイルを区別できる3引数版を利用しましょう

・このread中に別の処理でファイルが書き換えられてしまい、@linesの中身が変になった場合。
@linesを書き戻す処理があったら、そこで壊れる。
    • good
    • 0

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