foreach my $HANDLE (@HANDLES) { while(<$HANDLE>) { chomp; next unless /^PP_START$/ .. /^PP_END$/; # process line } } #### #!/usr/bin/perl use Modern::Perl '2014'; my @HANDLES = map { open my $HANDLE, "<", $_ or die "Could not open $_: $!\n"; $HANDLE; } @ARGV; foreach my $HANDLE (@HANDLES) { while(<$HANDLE>) { chomp; next unless /^PP_START$/ .. /^PP_END$/; say; } } #### uninteresting #1 uninteresting #2 uninteresting #3 TX_START uninteresting #4 uninteresting #5 TX_END PP_START interesting #1 interesting #2 #### uninteresting #1 uninteresting #2 uninteresting #3 TX_START uninteresting #4 TX_END PP_START interesting #1 interesting #2 interesting #3 PP_END uninteresting #5 uninteresting #6 uninteresting #7 #### PP_START interesting #1 interesting #2 uninteresting #1 uninteresting #2 uninteresting #3 TX_START uninteresting #4 TX_END PP_START interesting #1 interesting #2 interesting #3 PP_END