Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: (2) scratching the surface of File::Temp (unlink w/o $filehandle ?)

by ybiC (Prior)
on Feb 10, 2001 at 09:45 UTC ( #57578=note: print w/ replies, xml ) Need Help??

in reply to Re: scratching the surface of File::Temp
in thread (code) scratching the surface of File::Temp

Like you point out, a, if $fh is used instead of TMP, I lose $filehandle as soon as $fh is closed.   So how can I unlink0 with no $filehandle without generating "Use of uninitialized value @ /usr/local/lib/site_perl/File? line (1525|1584), <STDIN> chunk 1" ?

#!/usr/bin/perl -w use strict; use File::Temp qw(tempfile unlink0 ); use vars qw($fh $filename); my $template = 'fileXXXXXXXXXX'; my $dir = '/tmp/'; ($fh, $filename) = tempfile($template, DIR => $dir) or die "Error creating $filename: $!"; print $fh "\nS'working?\n" or die "Error writing to $filename: $!"; close $fh or die "Error closing $filename: $!"; print "\nUnlinking $filename\n<ENTER> to continue, CTRL+C to abort.\n" +; my $continue = (<STDIN>); unlink0 ($fh, $filename) or die "Error unlinking file $filename safely: $!"
I wouldn't be surprised if it's explained in the module's pod and I'm just not picking up on it.
    striving for Perl Adept
    (it's pronounced "why-bick")

Update: Good monk a says below "not supposed to close $fh... unlink0 will handle..."
A-ha!   that seems to do the trick. 8^)

Update #2: But if I don't "close $fh" then "print $fh "\nS'working?\n" or die;" doesn't really happen.   So I'm still doing something wrong 8^(

Comment on Re: (2) scratching the surface of File::Temp (unlink w/o $filehandle ?)
Download Code
Replies are listed 'Best First'.
Re: Re: (2) scratching the surface of File::Temp (unlink w/o $filehandle ?)
by a (Friar) on Feb 10, 2001 at 09:55 UTC
    Short answer: I don't think you can. Either you're not supposed to close $fh (unlink0 will handle that) or your first method: open a 2nd link and go from there. One hopes tilly|tye|chipmunk will be along w/ the correct answer real soon now ...


      You have the correct answer. And indeed it is addressed in the documentation. unlink0 performs checks that depend on having both the filename and the open filehandle, and if you do the close yourself it cannot verify that the close was safe.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://57578]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (8)
As of 2015-11-30 19:49 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (778 votes), past polls