我需要使用shift_jis编码处理文件。然而,行终止符的格式是我不熟悉的。
> file record.CSV
record.CSV: Non-ISO extended-ASCII text, with CRLF, NEL line terminators
我正在使用将军:
open my $CSV_FILE, "<:encoding(shift_jis)", $filename or die "Could not open: $CSV_FILE : $!";
while (<$CSV_FILE>) {
chomp;
# do stuff
}
然而,它仍然在每条记录的末尾留下CR。
终止这些类型文件的正确方法是什么?
答案 0 :(得分:1)
为什么不手动$_ =~ s/\r//
?
编辑:显然,你也可以做
require Encode;
use Unicode::Normalize;
s/\x{0085}//g;
删除NEL: Next Line, U+0085
个字符。
答案 1 :(得分:0)
您需要考虑谁在使用数据并了解有关生成这些文件的环境的更多信息。如果它是一个普通的CSV输出文件,你最后会使用你喜欢的任何旧的字符串操作来摆脱它们(并代替它们生成CRLF终结符),你会没事的。