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