friedo has asked for the wisdom of the Perl Monks concerning the following question:

Greetings, Monks.

I'm writing a daemon which monitors a directory to which large files are uploaded via FTP. When a new file is uploaded, the daemon should copy it to a temporary staging directory, whereupon it will be processed by mighty Perl.

But I don't want to accidentally grab a file that is in the middle of being uploaded. Is it enough to simply check for an advisory lock on new files, or are there other precautions I should be taking?

Alternatively, perhaps I'm going about it slightly backwards. Are there any Linux FTP servers which can trigger a program when a file is done uploading?