Alphaphi has asked for the wisdom of the Perl Monks concerning the following question:
Sometimes this fails due to network outages. In this case, the whole script dies:33 use File::Path qw(make_path remove_tree); [...] 387 $result = eval { remove_tree "/path/to/tree"; }; [...]
How can that be - remove_tree is trapped with eval¹? How can I make the script stay alive? What I want to do is to retry every second to remove the path until it's gone. However, this works:cannot remove directory for /path/to/tree Directory not empty at /path/to/script line 387.
rm also complains from time to time that the directory is not empty, but at least the script stays alive, and I can retry. It then always succeeds on the second attempt. I never need a third one. But I obviously want to avoid the system call with it's fork.387 $result = system( "rm -rf /path/to/tree" );
So what is that makes remove_tree feel so unhappy?
Thanks.
¹ I have read http://perldoc.perl.org/File/Path.html which tells me that it might be a bad idea to trap remove_tree, but in my case I think it's OK.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: remove_tree dies even when trapped with eval
by afoken (Chancellor) on Jun 12, 2015 at 10:00 UTC | |
|
Re: remove_tree dies even when trapped with eval
by choroba (Cardinal) on Jun 12, 2015 at 15:30 UTC | |
|
Re: remove_tree dies even when trapped with eval
by Anonymous Monk on Jun 12, 2015 at 09:00 UTC | |
by Alphaphi (Acolyte) on Jun 12, 2015 at 10:18 UTC | |
|
Re: remove_tree dies even when trapped with eval
by polettix (Vicar) on Jun 12, 2015 at 13:59 UTC |