#!/usr/bin/perl use strict; use warnings; use Fcntl qw/:flock/; use File::HomeDir qw//; BEGIN { my $lockfile_path = File::HomeDir->my_data . '/my_lockfile'; open LOCKFILE, '>', $lockfile_path; flock LOCKFILE, LOCK_EX | LOCK_NB or die "cannot acquire exclusive lock: $!\n"; } # do something sensible here print "Here I am\n"; sleep 10; print "And there I go\n"; END { flock LOCKFILE, LOCK_UN; close LOCKFILE; }