use IO::Uncompress::Unzip qw(unzip $UnzipError); my $logDirectory = '/logs'; foreach my $zipFile (glob("$logDirectory/*.zip")) { my $output; print "Decompressing $zipFile to memory\n"; unzip $zipFile => \$output; #print $output; open my $fh, '<', \$output or die $!; while (<$fh>) { #do something } close $fh or die $!; }