Which version of CGI are you using (try perl -MCGI -e "print $CGI::VERSION"), and what is the error you get when you set the use_tempfile parameter to 1?
CU Robartes-
Comment on Re: CGI.pm's upload hook with tempfile off
It seems that CGI 3.15, which you have, does not have the use_tempfile parameter. The parameter you provide in your call to CGI::new() gets passed on to the 'normal' CGI initialisation (i.e. the code that builds the query contents), probably leading to all kinds of funny stuff behind the scenes.
Try upgrading to CGI version 3.25, which does support the use_tempfile parameter. I have not checked whether it actually does anything yet, but at least you can set it in 3.25, as opposed to 3.15.