The Liunga::EN::NameParse already mentioned. But if you can, check out the most recent
Perl Journal. There was an article there written by someone who used that module to update and cross-reference employee databases (if my memory serves me correct). The entry's in the databases differed - sometimes entries had nicknames or initials instead of full first names. I will stop rabbiting on about this article because you'll enjoy it more if you read it yourself.
Update: I should probably rename my nick to
PerlJournalFAN because a growing %-age of my posts refer to it. It's great! Go Subscribe! Hard-copy and online versions available! YAH!