File::Path - create or remove directory trees
use File::Path;
mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711); rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
It returns a list of all directories (including intermediates, determined using the Unix '/' separator) created.
If a system error prevents a directory from being created, then the "mkpath" function throws a fatal error with "Carp::croak". This error can be trapped with an "eval" block:
eval { mkpath($dir) }; if ($@) { print "Couldn't create $dir: $@"; }
Similarly, the "rmtree" function provides a convenient way to delete a subtree from the directory structure, much like the Unix command "rm -r". "rmtree" takes three arguments:
It returns the number of files successfully deleted. Symlinks are simply deleted and not followed.
NOTE: There are race conditions internal to the implementation of "rmtree" making it unsafe to use on directory trees which may be altered or moved while "rmtree" is running, and in particular on any directory trees with any path components or subdirectories potentially writable by untrusted users.
Additionally, if the third parameter is not TRUE and "rmtree" is interrupted, it may leave files and directories with permissions altered to allow deletion (and older versions of this module would even set files and directories to world-read/writable!)
Note also that the occurrence of errors in "rmtree" can be determined only by trapping diagnostic messages using $SIG{__WARN__}; it is not apparent from the return value.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |