my $file = shift @ARGV; if (open my $FH , $file) { my $start_pattern_found = 0; while (my $line = <$FH>) { if ($start_pattern_found and $line =~ m{^need\s+this}) { print "found: $line"; } elsif ($line =~ m{^internal\s+name}) { $start_pattern_found++; } } close $FH; } else { die "failed to open '$file' ($!)\n"; }