CGI.pm uses its own hand rolled tempfile mechanism which is almost certainly the issue. See the package Fh around line 3000 of CGI.pm to see how this is hand rolled. If you are not using the HTML features then CGI::Simple gives you the same API but returns real IO::File objects which will work.

You can get the actual filename but you will have to hack into the CGI.pm object to do that. I suggest you don't. But if you want to Data::Dumper will let you see what you need to do to access the actual filename (it is under the .tmpfiles hash key in the object root). NB If $PRIVATE_TEMPFILES is set true then CGI.pm will unlink the underlying file, so you can only access it via the open handle that CGI.pm maintains.

If you want my 2c the simplest change is just to copy the file to a tmp file, make your GD:Image and unlink it. In relative terms the wait for the upload is the vast majority of the execution time, generating a tmp file is a trivial cost.

cheers

tachyon


In reply to Re: Creating GD::Image directly from CGI->upload() by tachyon
in thread Creating GD::Image directly from CGI->upload() by saberworks

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.