Tôi đang sử dụng mô-đun Text::CSV
để phân tích các dòng thành các trường khác nhau từ tệp giá trị được phân tách bằng tab.Phân tích các trường có ký tự đặc biệt bằng cách sử dụng Văn bản Perl :: CSV
Ví dụ về các ký tự đặc biệt trong chuỗi là
"CEZARY Å?UKASZEWICZ, PAWEÅ? WIETESKA","BÜRO FÜR"
Mã của tôi diễn ra như dưới đây:
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;
Trên đây là một số trong những phần quan trọng của mã của tôi. Các lỗi tôi nhận được là như sau:
cvs_xs error : 2026 - EIQ - Binary Character inside quoted field, binary off @pos 15
Quan trọng Lưu ý: Các hành vi mặc định là chỉ chấp nhận ký tự ASCII. Điều này có nghĩa là các trường không thể chứa các dòng mới. Nếu dữ liệu của bạn chứa các dòng mới được nhúng trong các trường hoặc các ký tự trên 0x7e (dấu ngã) hoặc dữ liệu nhị phân, bạn * phải * đặt nhị phân => 1 trong lệnh gọi hàm new(). Để bao gồm phạm vi tùy chọn phân tích rộng nhất, bạn sẽ luôn muốn đặt nhị phân. – alex