App-Highlander
view release on metacpan or search on metacpan
lib/App/Highlander.pm view on Meta::CPAN
use English qw(-no_match_vars);
use Fcntl qw(:flock);
use File::Temp qw/tempdir/;
use Path::Tiny;
our $LOCKDIR;
sub import {
my ($self, %args) = @_;
_create_if_not_exists(
$LOCKDIR = $args{LOCKDIR} // tempdir( CLEANUP => 1 )
);
print "LOCKDIR='$LOCKDIR'\n";
return;
}
our $LOCKFILE;
sub get_lock {
my ($lock_string) = @_;
$lock_string = _build_lock_string($lock_string);
lib/App/Highlander.pm view on Meta::CPAN
my ($normalized_programname) = $PROGRAM_NAME;
$normalized_programname =~ s|^.*/||;
$normalized_programname =~ s|\..*$||;
my $lock_name = join ':',
($lock_string || ()),"${normalized_programname}.lock";
return path($LOCKDIR, $lock_name)->canonpath;
}
sub _create_if_not_exists {
my ($dir) = @_;
return if -e $dir;
mkdir $dir, 0755
or die "Unable to make directory '$dir': $OS_ERROR";
return;
}
1;
( run in 0.941 second using v1.01-cache-2.11-cpan-0a987023a57 )