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

Hello, How can I create a link to a temp file from my webpage? I'm using temp files to prevent a file race condition. Since the file name is dynamic I'm having trouble referencing the file for my link. Here is what I have in my cgi code. ($jitter is the name of the filehandle)
print "<br><br><center><a href= $jitter>Jitter Log</a></center>";
The link points to IO::File=GLOB(blah). When I click on the link, I get an error stating that the browser does not know how to open this address since the protocol (IO) isn't recognized. Any suggestions on how to do this?

Replies are listed 'Best First'.
Re: HTML link to a temp file
by lostjimmy (Chaplain) on Feb 18, 2009 at 23:08 UTC
    The link points to IO::File=GLOB(blah). When I click on the link, I get an error stating that the browser does not know how to open this address since the protocol (IO) isn't recognized. Any suggestions on how to do this?

    Like Anonymous Monk said, you need the name of the file, not the file handle. Using File::Temp in list context, you can get the file handle and file name upon creation: ($fh, $filename) = tempfile( $template, DIR => $dir);

    You're also going to need to make sure the directory the temp file is in is accessible by the web server. If using apache, the directory is probably something like /var/www, so the final anchor tag would be constructed with something similar to the following: <a href="http://www.example.org/$filename">

Re: HTML link to a temp file
by Anonymous Monk on Feb 18, 2009 at 22:09 UTC
    $jitter is the name of the filehandle
    You need the name of the file instead.
Re: HTML link to a temp file
by Anonymous Monk on Feb 18, 2009 at 22:46 UTC
    If you're using IO::File->new_tmpfile, that file will be automatically deleted when closed. You want File::Temp instead