ikegami: I hadn't thought of using map to generate a list when given only a single input -- that's an interesting idea.
One thing I'm trying to do is avoid repeating the pattern used for detecting the start of each substring. When I try to capture using m//, I end up having to repeat the pattern to stop each match:
split seems to say what I want: "here is the thing that separates the paragraphs from each other". But then I have to piece the parts back together again (see my original post's code) and I'm trying to avoid that.