I've got a guess here, but because it sounds like a wall I've run into before: This might not be a perl
problem at all. Did you set the encoding to be something like
"multipart/form-data" in your HTML <FORM> tag? There's
more documentation on this in the CGI.pm docs.
I'd put my money on this solution. If you didn't specify the correct mime-type when posting the file from the upload form, then there's nothing for the Perl script to accept.