in reply to Recursive Directory Copying to Single Target Directory

I suggest to check the return value of copy as well. For example what if the disk is full? From the File::Copy documentation:

All functions return 1 on success, 0 on failure. $! will be set if an error was encountered.

BTW Are you sure the the file names are unique across all directories?