in reply to
Re: Matching consecutive "different" regex patterns across multiple lines
in thread Matching consecutive "different" regex patterns across multiple lines
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