Perl on Windows переводит мои новые строки в CRLF - PullRequest
0 голосов
/ 01 мая 2020

print FILEHANDLE; - при запуске из поля Windows - всегда преобразует конечный \n в \r\n - в результате получается файл в формате DOS. Разница между DOS и файлом UNIX заключается в том, что в UNIX последний символ каждой строки равен \ n, тогда как в Windows это \r\n. Я попытался изменить символ завершения строки $\ = "\n";, но команда печати все еще выполняет преобразование в формат DOS. Это происходит только на Windows коробках.

1 Ответ

2 голосов
/ 02 мая 2020

Если вам не нравится, как Perl решает вывести ваши данные, вы можете изменить их. В трех аргументе open это выглядит так:

open my $fh, '>:raw', $filename;

Или, если у вас уже есть дескриптор файла, вы можете использовать binmode:

binmode $fh, ':raw';
binmode $fh;          # :raw is the default

Выходные данные зависит от различных «слоев» ввода-вывода, каждый из которых вставляет свои грязные пальцы в ваши данные перед их выводом. Документы perlio имеют список. Есть слой :crlf, который превращает unix окончания строк, и вы, вероятно, получаете его по умолчанию. Обратите внимание, что изменение разделителя выходной записи происходит на уровне print, но существуют более глубокие слои, которые могут выполнять свою работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...