■2004-02-02
* [Perl] 車輪の再発明
perl 質問箱のこのあたりから始まって「車輪の再発明」に関する話が延々と……。
CPANは本当に便利なのですが、最初のうちは近寄りがたいものまた事実。そこで「これは便利で設置も楽」(だと私が思ったもの)を一つご紹介。IO::File::flockなどどうでしょう。名前の通り、flockするためのもの(なのでwindowsの場合、95や98では使えませんが2000やXPは○)です。
* IO::File::flock
use IO::File::flock qw(:flock);
# 排他ロックで書き込み 3秒でタイムアウト
# timeoutはalarmを使うのでwinでは使えないかも
$fh = new IO::File::flock $file, '>', LOCK_EX, 3
or die "Time Out";
$fh->print("なんか");
$fh->close();
これだけで、ファイルのopenからflockかけるのまで、全部やってくれます。 * どこでもインストール
このモジュールはIO-File-flock-0.09から入手できます。makeなんてしなくても、flock.pmをファイルに保存して、IO/File/ というディレクトリをつくってそこにflock.pmを置くだけでよいです(要は :: はディレクトリの区切りに対応)。SYNOPSISをみれば使い方もなんとかなるでしょう。ただこのSYNOPSISはタイプミスがあって、new IO::File::flockとなるべき所がnew IO::Fileになってます。最初コピペしたら全然flockが効かなくて悩みました(←ばか)
[]

