http://www.perlmonks.org?node_id=875454


in reply to csv'ish string with parens that include commas

Use Regexp::Common::list, something like this (presuming your strings and all word characters):
use Regexp::Common 'list'; my $re = qr{ \w+ # word characters (word or function name) (?:\($RE{list}{-pat=>'\w+'}\))? # (optional parameters) }x; my $x = 'joe,sam,x(monkey,lemur)'; my @x = ($x =~ m{$re}g); print join("\n", @x);
returns:
joe sam x(monkey,lemur)