http://www.perlmonks.org?node_id=370777


in reply to File parsing-again

Maybe this helps:
#!/usr/local/bin/perl use strict; use warnings; my @ctx_starters = qw(start1 start3); while (my $line = <DATA>) { if (grep { $line =~ /$_/ } @ctx_starters) { print $line; INNER: while ($line = <DATA>) { next INNER if $line !~ /^end/; print $line; last INNER; } } else { print $line; } } __DATA__ start1 foo bar end start2 baz quux end start3 bla bla end start4 hmm end start5 last one here end
Arjen