Here is a gentle introduction to Path::Tiny: Path::Tiny: The little module that keeps on giving. After you finish up with that, then I recommend you take a closer look at the documentation for Path::Tiny. For example, some Path::Tiny methods that may be relevant to your script are children, chmod, copy, exists, is_file, is_dir, mkpath, slurp, and stringify. Also, for changing file permissions/owners take a look at the documentation for chown. I think you will be more likely to receive constructive feedback if you attempt to modify your script and post the results in this thread.