More explicitly, Anonymonk is suggesting processing the input line-by-line using something like the following rather than attempting to match a whole chunk at once. Here I am just keeping the john line. If you actually need the lines between, push them to a @buffer as Anonymonk suggests.
my $john; while (defined(local $_ = <DATA>)) { if (/^(john\d+)$/) { $john = $1; } elsif (/^(jacob \- \d\.0)$/) { if ($john) { print "$john - $1\n"; } else { die "Jacob is not preceded by John!"; } undef $john; } } __DATA__ bhgfsggdsgsg -- john1 weruwearnwrnweuarar jjafdaiuweifweofiuwe jacob - 1.0 -- nfaslf23523525 john2 asfsjldf43tgre john3 asbdfhskafbv3333v sdfahh34ttg sadfhk34t3wtg sdfhk3gfwghhw3 jacob - 2.0
Good Day,
Dean
In reply to Re^2: Matching consecutive "different" regex patterns across multiple lines
by duelafn
in thread Matching consecutive "different" regex patterns across multiple lines
by eh3civic
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |