$zip = Archive::Zip->new() foreach my $membername (map {glob} $dir) { if (-d $membername) { $zip->addTree( $membername, $membername ); } else { $zip->addFile ($membername); } } $zip->writeToFileNamed($archive);