To make the first letter of each word upper case:
$line =~ s/\b(\w)/\U$1/g;This has the strange effect of turning "don't do it" into "Don'T Do It". Sometimes you might want this. Other times you might need a more thorough solution (Suggested by brian d foy):
$string =~ s/ ( (^\w) #at the beginning of the line | # or (\s\w) #preceded by whitespace ) /\U$1/xg; $string =~ /([\w']+)/\u\L$1/g;To make the whole line upper case:
$line = uc($line);To force each word to be lower case, with the first letter upper case:
$line =~ s/(\w+)/\u\L$1/g;You can (and probably should) enable locale awareness of those characters by placing a use locale pragma in your program. See perllocale for endless details on locales.
This is sometimes referred to as putting something into "title case", but that's not quite accurate. Consider the proper capitalization of the movie Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb, for example.