NAME

File::Flock::Tiny - yet another flock package

SYNOPSIS

my $lock = File::Flock::Tiny->lock($file);
... # do something
$lock->release;

DESCRIPTION

Simple wrapper around flock for ease of use.

METHODS

File::Flock::Tiny->lock($file)

Acquire exclusive lock on the file. $file may be a file name or an opened file handler. If a filename given and the file doesn't exist it will be created. The method returns a lock object, the file remains locked until this object goes out of the scope, or till you call release method on it.

File::Flock::Tiny->trylock($file)

Same as lock, but if the $file has been already locked, immediately returns undef.

File::Flock::Tiny->write_pid($file)

Try to lock the file and save the process ID into it. Returns the lock object, or undef if the file was already locked. The lock returned by write_pid will be automatically released when the object goes out of the scope in the process that locked the pid file, in child processes you can release the lock explicitely.

$lock->release

Unlock file

$lock->close

Close the locked filehandle, but do not release the lock. Normally if you closed the file it will be unlocked, but if you forked after locking the file and when closed the lock in the parent process, the file will still be locked even after the lock went out of the scope in the parent process. The following example demonstrates the use for this method:

{
    my $lock = File::Flock::Tiny->lock("lockfile");
    my $pid = fork;
    unless ( defined $pid ) {
        do_something();
    }
    $lock->close;
}
# file still locked by child. Without $lock->close,
# it would be unlocked by parent when $lock went out
# of the scope

Note, that this behaviour is not portable! It works on Linux and BSD, but on Solaris locks are not inherited by child processes, so the file will be unlocked as soon as the parent process will close it. See also description of flock in perlfunc.

AUTHOR

Pavel Shaydo, <zwon at cpan.org>

BUGS

Please report any bugs or feature requests via GitHub bug tracker at http://github.com/trinitum/perl-File-Flock-Tiny/issues.

SEE ALSO

A lot of modules with similar functionality on CPAN, it just happened that I don't like any of them.

LICENSE AND COPYRIGHT

Copyright 2011, 2012 Pavel Shaydo.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.