ここで役立つ可能性のある、より一般的な問題を解決しました。
任意の行区切り文字 (CR/CRLF/LF) を使用して行ごとに大きなファイルを解析する方法ですが、事前に不明です。
「大きな」ファイルとは、ファイル全体を 1 つの変数に読み込むことができないことを意味します。ここで、関数 'detectEndOfLine' はファイルの名前を取得し、'\r' または '\n' のいずれかを返します。ファイルの末尾)。
my $file = "test.txt";
local $/ = detectEndOfLine($file);
open(IN, $file) or die "Can't open file \"$file\" for reading: $!\n";
while(<IN>) {
s/\r\n|\n|\r$//;
print "$_\n";
}
sub detectEndOfLine {
my $file = $_[0];
my $size = -s $file;
print "\"$size\"\n";
open(IN, $file) or die "Can't open file \"$file\" for reading: $!\n";
for(my $i = $size; $i >= 0; --$i) {
seek(IN, $i, 0);
$_ = <IN>;
my $sym = substr($_, 0, 1);
return $sym if( $sym eq "\n" or $sym eq "\r" );
}
return undef;
}