# untested snippet my @good_lines,@bad_lines; foreach my $file_name (@file){ open(MYFILE, $file_name) or die qq(Cannot open '$file_name' : $!\n); # Read file line by line my $line; while (defined $line = ) { # Does the current line match our RE? if ($line =~ /NOT|INVALID|MUST|ERROR/) { push @bad_lines, $line; # store it in @bad_lines } else { push @good_lines, $line; # store it in @good_lines }; }; }; print "good: @good_lines"; print "bad : @bad_lines";