По умолчанию perl печатает \r\n в среде win32. Как я могу переопределить это? Я использую perl, чтобы внести некоторые изменения в некоторый исходный код в репозиторий, и я не хочу менять все символы новой строки.
Я попытался изменить разделитель выходной записи, но не повезло.
Спасибо!
Изменить: Требуется включить образец кода - я выполняю поиск и заменю на некоторые файлы, которые следуют относительно прямолинейному шаблону, например:
#!/usr/bin/perl
# test.pl
use strict;
use warnings;
$/ = undef;
$\ = "\n";
$^I=".old~";
while (<>) {
while (s/hello/world/) {
}
print;
}
Это должно заменить любые случаи "привет" на "мир" для любых файлов, переданных в строке cmd.
Изменить 2: Я попробовал binmode
, как было предложено, без какой-либо удачи. Я немного поразмыслил и обнаружил, что $^I
(специальная переменная inplace edit) переопределяет binmode
. Любая работа вокруг, чтобы все еще иметь возможность использовать редактирование inplace?
Изменить 3: Как указывает Синан, мне нужно использовать binmode ARGVOUT
с $^I
вместо binmode STDOUT
в моем примере. Спасибо.