use File::Find; my $dir = "/home/lprjob1/filest" find( sub { push @files, $File::Find::name if -f && /.+gz/ }, $dir ); #### use Tie::Gzip; for my $log (@files) { tie *LOG, 'Tie::Gzip'; open (\*LOG, '<', "$log") or die("Cannot open $log: $!"); while (my $line = ) { # Iterate over the files here and do blah } close (LOG); untie *LOG; }