Thanks to perrin and jlongino for their comments. I also contacted Lincoln and exchanged a few ideas with him. Apparently there have been some problems reported with file upload on CGI under mod_Perl, but they have been intermittent and hard to track down.
I added some debugging code to the TempFile DESTROY routine, and after remembering to cycle Apache so that the change got noticed, I discovered that there was an "Permission denied" problem.
Having previously had problems with File::Cache under NT before, I went back into my code and made sure that there was an explicit close to the uploaded file after I copied it from temp. Letting the handle go out of scope, appears to trigger CGI's DESTROY (it works find under CGI-BIN), but not under mod_Perl PerlRun. I added a close $handle at the end of the block just before it went out of scope, and now it works fine.
Lessons learnt:
- People here are helpful - thanks yet again.
- Some module authors are helpful, even though they are very busy - thanks Lincoln.
- NT can do stupid things - it's amazing that Perl and Apache/mod_Perl run on it at all. See timeout from UserAgent from mod_perl and multithreading mod_perl on Windows NT for examples, this had me stumped for a while too.
- I constantly underestimate mod_Perl, it's powerful and complex.
- Usually the problem is me, and trying to explain the problem to other people helps me to see where I went wrong.
Many thanks in arrears.
| [reply] [d/l] |