#!/usr/local/bin/perl use strict; use warnings; use Archive::Zip qw( :ERROR_CODES ); my @testFiles = listFiles ('C:\Perl\test'); # while loop to try every min for 3 mins if any the file counts a & b don't match my $retries = 0; while ($retries++ < 3) { my @compressFiles = listFiles ('C:\Perl\compress'); if (@testFiles == @compressFiles) { compress (\@compressFiles); unlink @compressFiles; #delete compressed files unlink @testFiles; #delete test files last; } print "Count Compare Failed!\n"; sleep 60; } sub listFiles { my ($dirName) = @_; chdir ($dirName) or die "Can't chdir to $dirName: $!"; opendir my ($scan), $dirName or die "Couldn't opendir $dirName: $!\n"; return grep {$_ ne '.' && $_ ne '..'} readdir $scan; } sub compress { my @add_array = @{$_[0]}; my $obj = Archive::Zip->new (); # new instance $obj->addFile ($_) foreach @add_array; # add files if ($obj->writeToFileNamed ('testing.zip') != AZ_OK) { # write to disk print "Error in archive creation!"; } else { print "Archive created successfully!"; } }