sub csvsplit { my (@result); for ($_[0]) { s/[\015\012]+$//; while (s/^"((?:[^"\\]|\\.)*)"// || s/^'((?:[^'\\]|\\.)*)'// || s/^([^,]*)//) { push(@result, $1); last unless s/^,//; } } return @result; }