Używam modułu Text::CSV
do analizowania linii w różnych polach z pliku wartości rozdzielanych tabulatorami.Analizowanie pól ze znakami specjalnymi przy użyciu tekstu Perla: CSV
Przykłady znaków specjalnych w ciągów są
"CEZARY Å?UKASZEWICZ, PAWEÅ? WIETESKA","BÜRO FÜR"
Mój kod idzie jak poniżej:
my $file = $ARGV[0] or die "Need to get TSV file on the command line\n";
my $csv = Text::CSV->new({sep_char => "\t"});
open(my $data,'<', $file) or die "Could not open '$file' $!\n";
while (my $line= <$data>) {
if($csv->parse($line)){
my @curr_arr = $csv->fields();
}
} # end of while
close $data;
Powyższy to niektóre z najważniejszych części mojego kodu. Błąd pojawia się następująco:
cvs_xs error : 2026 - EIQ - Binary Character inside quoted field, binary off @pos 15
Ważna uwaga: domyślne zachowanie jest do zaakceptowania tylko znaki ASCII. Oznacza to, że pola nie mogą zawierać znaków nowej linii. Jeśli twoje dane zawierają znaki nowej linii osadzone w polach lub znaki powyżej 0x7e (tyldy) lub danych binarnych, musisz * ustawić * binary => 1 w wywołaniu funkcji new(). Aby objąć najszerszy zakres opcji analizowania, zawsze będziesz chciał ustawić plik binarny. – alex