+ open my $fh, "<:encoding($encoding)", $path or die "$path: $!";
+ my $first = <$fh>;
+ my $possible_delimiters;
+ while ( $first =~ s/(\W)// ) {
+ $possible_delimiters->{$1}++;
+ }
+ warn "# possible_delimiters = ",dump($possible_delimiters);
+ seek $fh,0,0; # rewind for Text::CSV
+
+ 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$/ ) {
+ warn "## skip whitespace separator ",dump($sep_char);
+ $sep_char = shift @sep_by_usage;