__PACKAGE__->attr('full_path');
+sub ext { '\.[ct]sv$' };
+
sub data {
my $self = shift;
my $path = $self->full_path;
my $encoding = 'utf-8';
- if ( $path =~ m/\.([\w\-]+).csv/i ) {
+ if ( $path =~ m/\.([\w\-]+).[ct]sv/i ) {
$encoding = $1;
}
my @sep_by_usage = sort { $possible_delimiters->{$b} <=> $possible_delimiters->{$a} } keys %$possible_delimiters;
my $sep_char = shift @sep_by_usage;
while ( $sep_char =~ m/^\s$/ ) {
+ last if $sep_char eq "\t" && $path =~ m/\.tsv$/i;
warn "## skip whitespace separator ",dump($sep_char);
$sep_char = shift @sep_by_usage;
}
$sep_char = shift @sep_by_usage;
}
+ if ( $sep_char !~ m/,/ && $possible_delimiters->{','} && $path =~ m/\.csv/i ) {
+ $sep_char = ',';
+ warn "## csv file detected so prefer , as separator";
+ }
+
warn "sep_char = [$sep_char] for $path\n";
my $csv = Text::CSV->new ( { binary => 1, eol => $/, sep_char => $sep_char } )
while ( my $row = $csv->getline( $fh ) ) {
if ( ! @header ) {
@header = @$row;
+ $header[0] =~ s/^#// if $path =~ m/\.tsv/i; # remove hash from 1st column
next;
}
my $item;