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 tar header use HTTP::Request to retrieve the file from the remote server, passing it the callback for output write TAR_PAD to fill out the BLOCK } write TAR_END x 2