#!/usr/bin/perl -wl use strict; use Lingua::EN::Parse::PersonsName; while () { chomp(); # Get rid of the stuff we don't need on either end of the string my ($fullname) = $_ =~ /^\'\s+(.*?)\'$/; my $parser = Lingua::EN::Parse::PersonsName->new($fullname); print join(" ",$parser->fname, $parser->mi, $parser->lname); } __DATA__ ' Smith, John' ' Thompson, Frank A' ' Smith, John A JR' ' Smith, John A III' ' Smith, John A (Johnny)' ' Robert E Smith' ' Fred E.J.K Flintstone III' #### John Smith Frank A Thompson John A Smith John A Smith John A Smith Robert E Smith Fred E Flintstone