Обратите внимание, что в Windows существует различие между текстовыми и двоичными файлами.Текстовые файлы подлежат автоматическому преобразованию EOL, которое, как я полагаю, может добавить к времени выполнения, а также может испортить вашу двоичную замену (вероятно, не в этом случае).* с помощью этой замены.
Я думаю, что суть дела сводится к следующему: с помощью переключателя -p
вы должны обрабатывать ввод построчно.Где находится первый EOL (как понимается perl
) в файле?Вы пытаетесь прочитать огромную строку в память, сделать s///
на ней и записать?
Как насчет использования следующего сценария:
#!/usr/bin/perl
use strict; use warnings;
$/ = "\x00\x42\x00\x11";
$\ = "\x00\x42\x00\xf0";
while ( <> ) {
chomp;
print;
}
Кроме того, вам абсолютно необходимоиспользуйте двойные кавычки в Windows.Сравните и сопоставьте:
C:\Temp> perl -pe 's/perl/merl/' t.pl
#!/usr/bin/perl
...
C:\Temp> perl -pe "s/perl/merl/" t.pl
#!/usr/bin/<b><i>merl</i></b>
...