The meta info knows whether the field was quoted or not.
#!/usr/bin/perl
use warnings;
use strict;
use Text::CSV_XS;
my $csv = 'Text::CSV_XS'->new ({ binary => 1,
auto_diag => 1,
keep_meta_info => 1 });
open my $in, '<:encoding(utf8)', shift or die $!;
while (my $row = $csv->getline($in)) {
next if $row->[0] =~ m/^#/ && ! $csv->is_quoted(0);
$csv->say(*STDOUT, $row);
}
Tested with
#x,y,z skip
abc,"d
#e
f",ghi keep
#comment skip
a,b,c,#xyz keep
"#foo",x,y,z keep
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
|