my $tar = Archive::Tar->new; # ... # in a loop: $tar->add_files("$filename"); # ... my $data = $tar->write(); print $q->header(-type => 'application/octet-stream', -attachment => "edi.tar"); print $data;