my @filenames = qw(log1.log logX.log logZ.log); open(my $out, '>', 'output.txt') or die "Cannot open file 'output.txt' for writing: $!"; for (my $filename (@filenames) { open(my $in, '<', $filename) or die "Cannot open file '$filename' for reading: $!"; while (<$in>) { ... if (/AS \s+ $keyword/ix) { print $out join('', @block); last; } ... } close $in or die "Cannot close file '$filename': $!"; } close $out or die "Cannot close file 'output.txt: $!";