You could use a counter, which is set to 1 when you reach START then reset to 0 when you reach END. As the counter will only be 1 between START and END, you can simply print out any lines where this is the case.
use strict;
my $count = 0;
open (IN, "input.txt");
while (<IN>) {
if (/START/) {
$count = 1;
}
elsif (/END/) {
$count = 0;
}
elsif ($count) {
print;
}
}
close IN;
Output:
These are the first
set of lines
which are to be extracted
These are the second
set of lines
which are to be extracted
I wasn't sure if the blank lines were intentional, but if you don't want them, change to
elsif ($count && $_ !~ /^$/)