[Perl] => [ファイル操作]


この日記のはてなブックマーク数 このエントリーを含むはてなブックマーク

flockは開いたファイルをロック(保護)するために使用されます。Windowsサーバなど、flockが使用できない環境下では使えません。

[例]
-------------------------------------------------------------------
open(SERIAL, "+< ./serial.txt"); #ファイルを読み書きモードで開く
flock(SERIAL, 2); #書き込み宣言
my ($serial) = <SERIAL>; #値を読み込む
chomp $serial; #改行を取り除く
$serial = $serial+1; #値に1追加する
truncate(SERIAL, 0); #ファイルを空にする
seek(SERIAL, 0, 0); #ファイルの先頭に移動
print SERIAL "$serial"; #新しい値を書き込み
close(SERIAL); #ファイルを閉じる。ロックは自動的に解除されます
-------------------------------------------------------------------

[例: 追記の場合]
-------------------------------------------------------------------
open(LOG, "+< ./log.txt"); #ファイルを読み書きモードで開く
flock(LOG, 2); #ロック
seek(LOG, 0, 2); #ファイルの末尾に移動
print LOG "$log\n"; #ファイルに追記
close(LOG); #ファイルを閉じる
-------------------------------------------------------------------

※補足
以下のように書くのは間違い。ファイルを開いた時点でファイルサイズは0になっているため、ロックする意味はない。

open(SERIAL, "> ./serial.txt");
flock(SEIRAL, 2);



関連記事
DirHandle - ディレクトリのファイル一覧を取得
ファイルをコピーするには - File::Copy
seek関数 - ファイルの途中から読み込み(書き込み)をする
ファイルをロックするには - flock
ファイルを読み書きモードで開くには
広告