Perl может работать как с концами строк CRLF, так и с LF со встроенным слоем :crlf
PerlIO :
open(my $in, '<:crlf', $filename);
автоматически преобразует окончания строки CRLF в LF и оставляет окончания строки LF без изменений. Но файлы только для CR не нужны. Если вы знаете, что файл использует только CR, то вы можете установить $ / на "\r"
, и он будет читать построчно (но он не изменит CR на LF).
Если вам приходится работать с файлами с неизвестными окончаниями строк (или даже со смешанными окончаниями строк в одном файле), вы можете установить модуль PerlIO :: eol . Тогда вы можете сказать:
open(my $in, '<:raw:eol(LF)', $filename);
и он автоматически преобразует окончания строк CR, CRLF или LF в LF при чтении файла.
Другой вариант - установить $/
на undef
, что будет считывать весь файл за один прием. Затем разделите его на /\r\n?|\n/
. Но это предполагает, что файл достаточно мал, чтобы поместиться в памяти.