# Acquire lock sysopen(LOCKFILE,'L',O_WRONLY|O_CREAT); while(!flock(LOCKFILE, LOCK_EX|LOCK_NB)) { sleep(...); } # Lock granted! if(I am process A) { open(my $file,'<','F'); ... } elsif(I am process B) { unlink 'F'; open(my $file,'>','F); ... } # Release lock flock(LOCKFILE, LOCK_UN); close(LOCKFILE);