Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

weird behavior of creating a temp dir by File::Temp

by lightoverhead (Pilgrim)
on May 05, 2014 at 20:30 UTC ( #1085117=perlquestion: print w/replies, xml ) Need Help??
lightoverhead has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks:

I just test some code for creating a temp dir using File::Temp.

I would like the created temp dir will be automatically removed after the program running.

When I used the function way to make a temp dir, the created temp dir will not be removed after the program running even if I set the "CLEANUP=>1".

However, if I used object way to make the temp dir, the temp dir will be removed after program running.

the code is as below

use File::Temp qw/tempfile tempdir/; my $template = "testtempfileXXXX"; #my $dir = tempdir(CLEANIP=>1); #won't remove temp dir after runni +ng my $dir = File::Temp->newdir(); #will remove temp dir after runnin +g my ($fh,$path) = tempfile($template, SUFFIX=>".data", UNLINK=>1, DI +R=>$dir); print "the path is: $path\nthe dir is: $dir\n";

Does anyone have any insight into this?

Thank you.

Replies are listed 'Best First'.
Re: weird behavior of creating a temp dir by File::Temp
by toolic (Bishop) on May 05, 2014 at 20:43 UTC
    File::Temp does not use CLEANIP, but it does use CLEANUP. Change:
    my $dir = tempdir(CLEANIP=>1);

    to:

    my $dir = tempdir(CLEANUP=>1);
      That's funny, but it's exactly the kind of bug that's hard to spot in your own code... I'm sure the OP's brain saw that as "CLEANUP" every time.

      Sounds like an argument for Method::Signatures:

      #!/usr/bin/perl use strict; use warnings; use Method::Signatures; func foo(:$CLEANUP) { print "I will".($CLEANUP?"":" not")." clean up\n"; } foo(CLEANIP => 1);
      results in
      $ perl testSignatures.pl 
      In call to main::foo(), does not take CLEANIP as named argument(s) at testSignatures.pl line 13.
      

      Mike

      Thank you guys

      It's such a stupid bug!

      As Mike said, in my eyes, it was always "CLEANUP". Maybe my brain was short-circuited somehow.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1085117]
Approved by davido
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (4)
As of 2017-12-17 23:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What programming language do you hate the most?




















    Results (466 votes). Check out past polls.

    Notices?