in reply to running riot with an regx on surnames.

If I were faced with such a task, I'd be looking at using Lingua::EN::NameParse.