in reply to Simple regular expression that isn't simple

What you're asking for is the modifier to * to make it non-greedy. That would be ? used thusly:

$seqs =~ /^(\>.*?(?=\>))/ms;

Though you might want to consider choosing an alternative way to delimit your "records". In your text they appear to be separated by a blank line. If you set $/ = "\n\n"; and read one record at a time from your file, maybe that will work well enough for you? Or, you could at least use split to partition your data usefully.