What kind of filenames do you have?
Try this , its based on https://metacpan.org/source/PHRED/Archive-Zip-1.49/examples/zip.pl with Path::Tiny for ease and autodie
#!/usr/bin/perl --
## dirzip.pl
## 2015-08-24-01:12:41
##
##
##
## perltidy -olq -csc -csci=3 -cscl="sub : BEGIN END " -otr -opr -ce
+-nibc -i=4 -pt=0 "-nsak=*"
#!/usr/bin/perl --
use strict;
use warnings;
use Path::Tiny qw/ path /;
use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
my $directory = 'D:\WorkArena\Data\Final build ';
my $outfile = '... dummy.zip';
DirZip( $directory, $outfile );
exit( 0 );
sub DirZip {
my( $indir, $outzip ) = @_;
$outzip = path( $outzip )->absolute;
$indir = path( $indir )->absolute;
my $prefix = path( $indir )->absolute;
my $zip = Archive::Zip->new();
for my $infile ( $indir->children ) {
my $shortname = path( $infile )->relative( $prefix );
print "Trying to addFile( $infile , $shortname )\n";
if( $infile->is_file ) {
$zip->addFile( "$infile", "$shortname" )
or warn "Can't ->addFile( $infile, $shortname ) ";
} else {
AZ_OK == $zip->addTree( "$infile", "$shortname" )
or warn "Can't ->addTree( $infile, $shortname ) ";
}
}
print "Trying to ->writeToFileNamed( $outzip )\n";
my $status = $zip->writeToFileNamed( "$outzip" );
die "ERROR ->writeToFileNamed( $outzip ) , status == $status "
if $status != AZ_OK;
} ## end sub DirZip
__END__