my $archive = Archive::Zip->new(); my $member = $archive->addDirectory('.'); while ($r = $q->fetchrow_hashref) { my $line = join("\t", map { $r->{$_} } @download_fields); $member->addToString('names.tab', $line); } $self->{state}{download_contents} = "$archive";