in reply to Directory creation failing
Try mkdir($dir) or die "Unable to create directory $dir: $!"; (obviously assigning $dir first).
$! should give you a clue.
If you're trying to create a hierarchy/tree of directories, you should look at File::Path's mkpath call.
File::Path is a standard module.
If you're not doing so already, Use strict warnings and diagnostics or die.
If the information in this post is inaccurate, or just plain wrong, don't just downvote - please post explaining what's wrong.
That way everyone learns.