If you wanted to get closer to your objective, you should shoot for "Proper case for names in the English language". IMHO, this is not a problem to be solved by perl or programming altogether. Wouldn't this be better tackled by handling the your data-entry methods?
Your point is well taken.
Yes, entering clean data is easier than cleaning it later. However, I'm dealing with a large established
database, with over ten million names. Errors do creep in over time...
If you want a good method, you could try using
large database of names for comparison (the phone book
comes to mind) to figure out what is the likely correct
capitilization of a name.
Many companies avoid this problem all-together. Most
of the bills (and other postal mail) that I receive
only list my name in all-caps.