sub dequote { my ($s) = @_; if ($s =~ /^"/) { $s =~ s/^"//; $s =~ s/"$//; } $s =~ s/\\(.)/$1/sg; return $s; } my $val = /\G ( " (?: [^\\"] | \\. )* " | (?: [^\\,] | \\. )* ) /xsgc && dequote("$1");