#!/usr/bin/perl -w use strict; use warnings; use File::Basename; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); my $procdate = sprintf "%02d%02d%02d%02d%02d%02d", (localtime)[4]+1, (localtime)[3], substr((localtime)[5]+1900,2,2),(localtime)[2], (localtime)[1], (localtime)[0]; my @dipfile = glob('C:/ReportExtract/Director/*.xml'); ##### Zip each file into a zip file for archiving ##### my $targetdir = File::Spec->catdir('C:/ReportExtract/Director/'); my $targetzip = File::Spec->catdir($targetdir, basename($procdate) . ".zip"); #Need basename. my $zip = Archive::Zip->new(); my $zipdir = $zip->addDirectory($targetdir); foreach my $xml_file (@dipfile) { my $temp = File::Basename::fileparse($xml_file); #Trying it with only the basename. $zipdir = $zip->addFile($temp); }; unless ( $zip->writeToFileNamed($targetzip) eq "AZ_OK" ) {die 'read error';}