in reply to How do i capitalise sentences?

$punc = "?!."; ucfirst($string); $string =~ s#([$punc][^a-z]*[a-z])#uc($1)#eg; ## or $string =~ s#([$punc]\s*[a-z]#uc($1)#eg;

The first meets the strict definition of the requirements, but also causes
"Who are you? 6 is my number"
to become
"Who are you? 6 Is my number"
which may or may not be desired. If not, the second one only allows whitespace to be skipped between the end of a sentence and the start of a word.

I used a-z instead of \w because otherwise perl will try to "uppercase" an underscore, which is not what we want. It's also safe to put the whole thing in a single paren, and to uppercase the whole thing, since the only part able to be uppercased is the part we *want* uppercased. I also removed the specification of what constitutes the end of a sentence outside of the regular expression, which makes it a little easier to read, and also allows easier changes in the future without accidentally breaking your regular expression.

The usual warning vis a vis use English; and \w apply, of course. :)