FLOCK: do { open (FILE, ">file.dat"); flock(FILE, 2) or redo FLOCK; print FILE "blah\n"; close FILE; $locked = 1; } while ($locked =/ 1)