use File::NFSLock; use Fcntl qw(LOCK_EX LOCK_NB); my $file = "somefile"; if (my $lock = new File::NFSLock { file => $file, lock_type => LOCK_EX|LOCK_NB, blocking_timeout => 10, # 10 sec stale_lock_timeout => 30 * 60, # 30 min }) { open(FILE, "+<$file") || die $!; # or open it any way you like # ... $lock->unlock(); }else{ die "I couldn't lock the file [$File::NFSLock::errstr]"; }