|laziness, impatience, and hubris|
Answer: How do I handle mid-line carriage returns in a flatfile database?
There's a whole bunch of stuff in the FAQ about matching over more than one line, like the /s modifier for the end of a regular expression, which means "the stuff you find doesn't have to be on the same line".
It also say that if you set $/ = '' then Perl will read in paragraphs at a time, not lines at a time.
Does that help?
But obviously, killing the carriage returns on the way in to your program is going to solve it. The equivalent to the $/ = '' thing above is surely to
* replace all double returns with a holding pattern like ||||
* replace all single returns with spaces
* replace all |||| with returns