in reply to This is weird...

To add just a little more to the learned discussion on this topic, you need to be worried about how flock() works on your system - on most Unices I have used, it is advisory only. That is, the locking is not enforced by the file system.

Normally, this isn't a problem. Until you write code like

open TEST, ">test.html" or die "A grim and horrible death: $!"; unless ( flock test, 6 ) { close TEST; die "Couldn't get the lock!"; }
The open() call will cause you all sorts of grief because you opened the file for writing. Regardless of the locking, the OS has just overwritten the file. If you can't get the lock, either you or perl will close the file, and write a file with exactly 0 bytes in it. You should always open the file for append. If you do get the lock, you can always use seek() to start rewriting.

turnstep's example does this, but I didn't see any explanation and this mistake has caused me a fair amount of pain previously.

mikfire