in reply to cp -rp src dst

What Perl does have is multiple mechanisms for running *nix commands. Often this is the clearest way to do something. Would you rather write 10+ lines of code, checking whether a node is a file or a directory then making that directory or copying that file or would you prefer the following?
`cp -rp blah1 blah2`;
or
system ("cp -rp blah1 blah2");
or even
qx/cp -rp blah1 blah2/;
Just don't forget to check the process' return value "$?"