When locking files, we recommend that
when possible. However, on some systems,
flock’s locking strategy is not reliable.
For example, the person who built Perl on your system configured
flock to use a version of file locking that
didn’t even try to work over the Net, or you’re on the
increasingly rare system where no
exists at all.
The following program and module provide a basic implementation of a
file locking mechanism. Unlike a normal
with this module you lock file names, not file
Thus, you can use it to lock directories, domain sockets, and other non-regular files. You can even lock files that don’t exist yet. It uses a directory created at the same level in the directory structure as the locked file, so you must be able to write to the enclosing directory of the file you wish to lock. A sentinel file within the lock directory contains the owner of the lock. This is also useful with Section 7.8, because you can lock the filename even though the file that has that name changes.
nflock function takes one or two arguments.
The first is the pathname to lock; the second is the optional amount
of time to wait for the lock. The function returns true if the lock
is granted, false if the timeout expired, and raises an exception
should various improbable events occur, like being unable to write
$File::LockDir::Debug variable to true to make the module emit messages if it stalls waiting for ...