use strict; use warnings; use Fcntl qw( :flock ); sleep(1); open(my $fh, '+<', $0) or die "open: $!\n"; print localtime().": $$'s flock attempt starts\n"; flock($fh, LOCK_EX) or die "flock: $!\n"; print localtime().": $$'s flock obtained\n"; sleep(5); print localtime().": $$ ends\n";