#!/usr/local/bin/perl use strict; use warnings; use Archive::Zip qw( :ERROR_CODES ); my $directory1 = 'C:\Perl\test'; chdir($directory1) or die "Can't chdir to $directory1 $!"; opendir(DIR1, $directory1) || die "Couldn't opendir: $!\n"; my @files = grep { $_ ne '.' && $_ ne '..' } readdir DIR1; my $a =0 ; foreach(@files){ $a++; } my $directory = 'C:\Perl\compress'; chdir($directory) or die "Can't chdir to $directory $!"; opendir(DIR, $directory) || die "Couldn't opendir: $!\n"; my @files2 = grep { $_ ne '.' && $_ ne '..' } readdir DIR; my $b=0; my $c=0; foreach(@files2){ $b++; } # while loop to try every min for 3 mins if any the file counts a & b don't match while($c < 3) { if ($a eq $b) { compress(\@files2); unlink @files2; #delete files in the compress folder after compression is complete unlink @files; #delete files in the test folder; $c=3; } else { print "Count Compare Failed!\n"; sleep 60; @files2 = grep { $_ ne '.' && $_ ne '..' } readdir DIR; $b=0; } $c++; foreach(@files2){ $b++; } } # subroutine to compress the files into one sub compress { my @add_array=@{ $_[0] }; my $obj = Archive::Zip->new(); # new instance foreach (@add_array) { $obj->addFile($_); # add files } if ($obj->writeToFileNamed('testing.zip') != AZ_OK) { # write to disk print "Error in archive creation!"; } else { print "Archive created successfully!"; } } closedir(DIR1); closedir(DIR);