foreach $zip_file (@zip_files){ open ZIPS, "unzip -l $zip_file|"; while(){ push @text_files,$1 if /(\d+.out)$/; } foreach $text_file (@text_files){ open IN, "unzip -p $zip_file $text_file|"; my (@required_data) = process_file(\*IN); } }