in reply to Newbie parsing problem

Why do all your own barking when you can get yourself a perfectly good dog? ;)

Lingua::EN::Parse::PersonsName does a pretty good job with this:

#!/usr/bin/perl -wl use strict; use Lingua::EN::Parse::PersonsName; while (<DATA>) { 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'
Output:
John Smith Frank A Thompson John A Smith John A Smith John A Smith Robert E Smith Fred E Flintstone
(Note that a warning is thrown on the first one when we try to print the middle initial - because there is none.)

Cheers,
Darren :)