nothing wrong w/#1 as along as the files can be found (since they'll be under the distro path)
#2 should be easy and complete ;
File::Temp and
File::Copy are both useful here .. the first to get a file name (and to automatically clean it up) and the second to copy \*DATA if that's what's desired (or it's simple enough to do manually as well).
This also has the advantage that you can create the content on the fly, in case it needs to be based upon previous tests or results (e.g. a general example: insert'ing into a db, and the datafile needs to have that new primary key value or something)