in reply to Incosistent delimeter

It's not clear what you want to do about spaces around commas. This strips spaces before and after commas:
$data = '1, 2, 3,"a,b,c","d", 4'; @a = $data =~ / *(".*?"|[^,]*?) *(?:,|$)/g; pop @a; for (@a) {s/^"(.+?)"$/$1/} print join "\n", @a;