I had a similar need, but my files don't even exist on disk. I was building a web server that returns tars of files that came from other web servers. I never "cleanly" integrated my approach with Archive::Tar or packaged it up nicely, but here is the gist of it:
I take a callback from the caller, and call it to do any output. I pass the callback into HTTP::Request to retrieve the file from the remote site and pass it through to the web client.
for each file
{
HEAD the file on the remote server to get the file size
use Archive::Tar::File's internal _format_tar_entry to write the t
+ar header
use HTTP::Request to retrieve the file from the remote server, pas
+sing it the callback for output
write TAR_PAD to fill out the BLOCK
}
write TAR_END x 2
Any ideas on a clean way to build a generic module that I could use are welcome...