#!/usr/bin/perl

use strict;

my $pont = qr{[.!?]+};                  ## punctuation
my $abrev = qr{\b(?:Pr|Dr|Mr|[A-Z])\.}; ## abbreviations

$/ = "";

while(<>) {
    chomp;                              ## for each paragraph,

    s/\h*\n\h*/ /g;                     ## remove \n
    s/($pont)\h+(\S)/$1\n$2/g;          ## punctuation+space
    s/($abrev)\n/$1 /g;                 ## undo \n after abbreviations

    print "$_\n";
}