$string =~ s/((?:^\s*|[!?.]+\s+)[^a-zA-Z0-9]*)([a-z])/$1\u$2/g;