use Archive::Zip; my $zip = Archive::Zip->new(); my $DIR = " E:\\temp"; opendir(DIR,$DIR) or die "Can't open the current directory: $!\n"; my @names = readdir(DIR) or die "Unable to read current dir:$!\n"; foreach my $fileName (@names) { if ($filename =~ /.txt/) { $zip->addFile($fileName); } } $zip->writeToFileNamed("result.zip"); exit;