perlを始めて3ヶ月位ですが、ファイルロックに
ついて自分なりに色々と試行錯誤した結果、以下の
ようなルーチンを作りました。
flockが使える事が前提ですが、何か欠点や改良点が
あれば指摘して頂けるとありがたいです。

filelock.pl
package filelock;
our %_lock;
sub END {
 foreach my $file ( keys %_lock ) {
  close( $_lock{$file}{'handle'} );
  unlink( $_lock{$file}{'name'} );
  if( $_lock{$file}{'tmp'} ) { rename( $_lock{$file}{'tmp'}, $file ); }
} }
sub readOpen {
 my ( $file ) = @_;
 my ( $handle );
 _append( $file );
 if( !open( $handle, "<$file" )) { return undef; }
 return $handle;
}