Really struggling with them at the moment. File::Find is doing the job of traversing the directory structure nicely but when I try to use File::Copy to copy any matching files I get a no such file or directory error!

One annoying thing with File::Copy is that you never know whether the error message applies to the source or to the destination, so I suggest that before doing the copy, you check source and destination for existence.

Your usage of qx() doesn't make sense. You collect the output of zgrep, and then throw it away. From your original posting, I had concluded that you need the stdout of zgrep; but if you don't need it, you can as well use system().

Also, the code doesn't incorporate the suggestions I gave you in my last reply....