[comp.lang.perl] Need help with upper/lower case conversion

carlton@apollo.HP.COM (Carlton B. Hommel) (12/19/89)

A user asked for help in converting files from uppercase to lowercase, and
back again.  Of course, the two one-liners
    % perl -p -e 'tr/a-z/A-Z/;' lower_case_file
    % perl -p -e 'tr/A-Z/a-z/;' upper_case_file
will do that.  However, I foolishly said that it would be easy to write
a program to convert an all uppercase message, which often are sent by our
novice users, to a more normal format.

The algorithm I thought of is:
    o uppercase any alpha two spaces after a "."
    o uppercase any alpha at the beginning of a line, when there
      was a "." at the end of the previous line.

I could brute force this, but that would be work, not fun.  I have twiddled
with the following features of perl, but got nothing to work.
    o Setting $/ = "\177" and reading in the whole file at once.
    o Using   if (/\.  (.)/) {  and $1

I really want an elegant regexp, combined with the tr command.  Any ideas?

Carl Hommel
carlton@apollo.hp.com