use File::Path
mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
mkpath function provides a convenient way to create directories, even if
your mkdir kernel call won't create more than one level of directory at a
time.  mkpath takes three arguments:
mkpath
to print the name of each directory as it is created
(defaults to FALSE), and
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:
rmtree expects
Unix file specification syntax.
rmtree to
print a message each time it examines a file, giving the
name of the file, and indicating whether it's using rmdir
or unlink to remove it, or that it's skipping it.
(defaults to FALSE)
rmtree to
skip any files to which you do not have delete access
(if running under VMS) or write access (if running
under another OS).  This will change in the future when
a criterion for 'delete permission' under OSs other
than VMS is settled. (defaults to FALSE)