use Fcntl qw/:flock/; open LOCK, ">", "results.dat.lck" or die; flock LOCK, LOCK_EX; open OUT, ">", "results.dat" or die; # print data close OUT; close LOCK; # releases the lockfile, lets other processes write