use Fcntl qw(:flock); my $file = '/home/X/public_html/filelock'; my $SEMAPHORE = "$file.lck"; open(LOCK, ">$SEMAPHORE") || die $!; flock(LOCK, LOCK_EX); unless (-e "file.html") { open (HTMLFILE,">file.html"); require 'html_head_page.pl'; close (HTMLFILE); close(LOCK); unlink("$SEMAPHORE"); }