use strict; use warnings; use Fcntl qw(LOCK_EX LOCK_NB); open DATA, ">>", $0 or die $!; flock DATA, LOCK_EX | LOCK_NB or die "already running\n"; print "started $$\n"; sleep 300; __DATA__