As you mentioned Lingua::Sentences
, I think it's an option to manipulate the original output from this module a little bit to get what you need
use Lingua::Sentence;
my @paragraphs = split /\n{2,}/, $splitter->split($text);
foreach my $index (0..$#paragraphs) {
my $paragraph = join "\n\n", map { $index+1 . " $_" }
split /\n/, $paragraphs[$index];
print "$paragraph\n\n";
}