#!/usr/bin/perl use warnings; use strict; open PARAMS, "params.txt" or die "Couldn't open the file. $!"; my @params=; close PARAMS; my @files = glob("*.RPT"); for my $i (@files) { open INPUT, "$i" or die "Couldn't open the file. $!"; open OUTPUT, ">$i.dat" or die "Couldn't write to $i.dat - $!"; print OUTPUT "$i\n\n"; print OUTPUT " Parameter Value\n"; print OUTPUT "-------------------------\n"; while () { for my $x (@params) { next unless /\s($x)\s*(\d*)/; print OUTPUT "$1 $2\n"; # probably use printf() here } } close INPUT; close OUTPUT; } #### ... my $paramre = join '|', @params; ... while () { next unless /\s($paramre)\s*(\d*)/; print OUTPUT "$1 $2\n"; } ...