in reply to extract regions

If all you want to do is to extract data between each >lmo, you could do this instead:
local $/ = '>lmo'; while (<DATA>) { s/\n*?>lmo//; # add s/\n//g; if you want to combine lines next if !$_; print "--- REGION ---\n", $_, "\n"; } __DATA__ >lmo0024 16802072 upstream sequence, from -300 to +3, size 304 ctttcggacaaagcgtggttgattttattcttaacgaaattccagaatggctaatgggtg caaaaatccagtagctgcaggagcaaatggtgcagcgctagttggggaggaga atga >lmo0025 16802073 upstream sequence, from -27 to +3, size 31 aatataaaaattggaggaatagacaaaatgg
And the output -
--- REGION --- 0024 16802072 upstream sequence, from -300 to +3, size 304 ctttcggacaaagcgtggttgattttattcttaacgaaattccagaatggctaatgggtg caaaaatccagtagctgcaggagcaaatggtgcagcgctagttggggaggaga atga --- REGION --- 0025 16802073 upstream sequence, from -27 to +3, size 31 aatataaaaattggaggaatagacaaaatgg