in reply to searching data lines between keywords

You could take a look at the grep function too.
my @filtered = grep { !m/(?:mykeyword|\*\*\*END\*\*\*)/ } <DATA>; print @filtered; __DATA__ mykeyword1 <several data lines> ***END*** mykeyword2 <several lines> ***END*** mykeyword3 <several lines> ***END*** mykeyword4 <again several lines> ***END***