#!/usr/local/bin/perl $datafile = 'test.dat'; $data = "test"; use Benchmark; $count = 5000; timethese($count, { 'TEST1' => '&test1;', 'TEST2' => '&test2;', }); sub test1 { open(OUT, "+< $datafile"); # 読み書きモードで開く flock(OUT, 2); # ロック確認。ロック seek(OUT, 0, 0); # ファイルポインタを先頭にセット print OUT "$data\n"; # 書き込む truncate(OUT, tell(OUT)); # ファイルサイズを書き込んだサイズにする close(OUT); # closeすれば自動でロック解除 } sub test2 { open(OUT, "+< $datafile"); # 読み書きモードで開く flock(OUT, 2); # ロック確認。ロック truncate(OUT, 0); # ファイルサイズを0バイトにする seek(OUT, 0, 0); # ファイルポインタを先頭にセット print OUT "$data\n"; # 書き込む close(OUT); # closeすれば自動でロック解除 }