Even within the Amero-centric paradigm there are still some scenarios your module may not handle (correct me if I'm wrong):
* Two or more middle names (e.g. George Herbert Walker Bush, British nobility/royalty, etc.)
The second middle name can be handled as an extra argument, and added to the format (or not) using %1.
* No middle name
If there is no middle name (it's undef or ''), then even if the format has %m in it, it will not be displayed. This is the whole point of the module, really -- to handle those situations where the available names vary a great deal.
* Only a middle initial (e.g. Harry S. Truman, Bullwinkle J. Moose)
It will be included as an initial when using %m for middle name, the middle initial with the period using %M, and the middle initial itself using %I. The only caveat is that if you use %M with a name like "Ulysses S Grant" (note the lack of a period), the middle initial will be output as "S.". This is a rare case, however.
* First initial, goes by middle name (e.g. my mom, D. Colleen Ward)
Make the first name argument "D.", the middle name argument "Colleen", and the last name argument "Ward".
* Last name is two words (e.g. a friend of mine, Joydeep Roy Chowdhury; his last name is "Roy Chowdhury")
It's still a single scalar argument, "Roy Chowdhury", to strfname(). Of course, the initial using %L would be "R.".
The upshot is that you pass in the various name parts you want formatted into a string. Lingua::Strfname doesn't parse string into name parts. For that, someone would have to write Lingua::Strpname. ;-) And that would more likely have to be localized, e.g., Lingua::EN::Strpname.
Regards,
david
-- David Wheeler AIM: dwTheory [EMAIL PROTECTED] ICQ: 15726394 http://kineticode.com/ Yahoo!: dew7e Jabber: [EMAIL PROTECTED] Kineticode. Setting knowledge in motion.[sm]
