Perl пишет LF как CRLF в Windows - PullRequest
0 голосов
/ 23 апреля 2019

Я получил некоторые паразитные окончания строк в стиле Windows в нескольких файлах, и я пытаюсь разрешить их на моем компьютере с Windows с помощью следующей команды:

perl -pi -e s/\R/\n/ example.txt

После запуска всех окончаний строк вфайлы, на которых он был запущен, были изменены на CRLF, что противоречит моему намерению.Почему Perl делает это, и есть ли что-то, что я могу изменить, чтобы заставить эту работу работать так, как я ожидаю?

Я использую Strawberry Perl версии 5.28.

1 Ответ

1 голос
/ 23 апреля 2019

Windows-сборки Perl по умолчанию добавляют слой :crlf к дескрипторам. Это преобразует CRLF в LF при чтении и LF в CRLF при записи. (Некоторые другие языки делают что-то подобное.)

Вы должны сказать Perl, что это не текстовый файл. К сожалению, с ARGV, специальным дескриптором, который вы используете, этого не сделать.

perl -pe"BEGIN { binmode STDOUT }" example.txt >example.new.txt
move example.new.txt example.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...