Это достаточно просто, если вы хотите регулярное выражение:
\w[^;]+
Пример Perl:
@names = "J. Smith; B. Jones; O. Henry" =~ /\w[^;]+/g;
# ("J. Smith","B. Jones","O. Henry")
Или, если вы хотите разделить, я бы использовал \s*;\s*
(\s*
для удаления пробелов):
@names = split /\s*;\s*/, "J. Smith; B. Jones; O. Henry";
# ("J. Smith","B. Jones","O. Henry")