in reply to m//g in list and scalar context differences?

This should get you close to what you want..
>perl -e "my $x = qq['foo',123,'bar\\'cuz', 'comma,comma',,'void']; map { print qq[<$_;\n]; } $x=~m/((?:'[^']*'|[^'\s,]+|))(?:[$|,\s]|$ +)/g;" <'foo'; <123; <'cuz'; <; <'comma,comma'; <; <'void'; <;
There is an extra empty item returned. No easy way to avoid that, that I can think of.
'bar\'cuz' is an invalid text string, in this context, so only 'cuz' is returned.

Note the use of non-capturing parens "(?:" - quite useful in this context, so each iteration returns only a single capture, because the first paren IS a capturing paren.

     "As you get older three things happen. The first is your memory goes, and I can't remember the other two... " - Sir Norman Wisdom