Try this. It passes your test case :)
#!/usr/bin/perl # https://perlmonks.org/?node_id=1232492 use strict; use warnings; $_ = do { local $/; <DATA> }; my @del =map /^(?=(\d+)\n)(?=.*^bar\n)/ms, /^begin\n(.*?)^end\n/gms; my $pattern = do { local $" = '|'; qr/^\s+(foo )?ref (@del)\n/mn }; s/$pattern//gm; print; __DATA__ ref 1 ref 2 ref 3 ref 4 begin 1 end begin 2 bar end begin 3 end begin 4 bar end ref 5 foo ref 6 ref 7 begin 5 end begin 6 bar end begin 7 bar end
In reply to Re: some efficiency, please
by tybalt89
in thread some efficiency, please
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |