Store the sets of lines in an array of arrays (AoA)
#!/usr/bin/perl
use strict;
my $flag = 0;
my @lines = ();
my @set = ();
while (<DATA>){
if (/^\s*END/){
$flag = 0;
push @set,[@lines];
} elsif (/^\s*START/){
$flag = 1;
@lines = ();
} elsif ($flag) {
push @lines,$_;
}
}
my $n = 1; # first set
print join '',@{$set[$n-1]};
$n = 3; # third set
print join '',@{$set[$n-1]};
__DATA__
XXX
YYYY
START
These are the first
set of lines
which are to be extracted
END
START
These are the second
set of lines
which are to be extracted
END
XXX
ZZZ
YYY
START
These are the third
set of lines
which are to be extracted
END
aasds
tteret
tertetr
poj