in reply to Search file for certain lines
It would be easier to give you advice if you told us what you already know and thought of. Right now I'll just try and guess what I should tell you and what you already know.
Your conditions on the lines sound like a job for regular expressions. And there kind of is a "from .. until" operator in Perl, which is the flip flop operator, which would allow you to do something like (check the next keyword by the way) :
Which is nice and short, but not well known and understood, so if it looks to hard to understand to you, or if there probably will be a lot of people reading your code, you could use classic control structures : if, else, unless.
next unless /^h/ .. /^h/; # stop processing the line unless we are b
+etween two lines starting with h