in reply to recursive mkdir
try File::Path.
use File::Path; eval { mkpath 'c:/foo/bar/' }; warn "problem making directory : $@" if $@; eval { mkpath '../baz/quux/' }; warn "problem making directory : $@" if $@; [download]