my $buffer; while(<>) { if(my $counter = (/^name\s.*\{/ ... /^name\s.*\{/)) { if($counter == 1) { # begin $buffer = ''; } $buffer .= $_; if($counter =~ /E/) { # end if($buffer =~ /name(.*)name/s) { print "Found: $1\n"; } redo; # retry with same line } } }