Powershell, отвергающий Perl binmode?

У меня есть сценарий Perl, который создает двоичный файл при сканировании файла очень крупного текста. Это производит к STDOUT, который я перенаправляю в командной строке в файл.

Для оптимизации его, я вношу изменения, затем видя, как низко это берет для выполнения. На Linux для этого я использую команду "времени". В Windows лучший способ ко времени программа, казалось, была к "команде меры" PowerShell. Это, казалось, хорошо работало, но я заметил, что сгенерированные файлы были больше. На исследовании я нашел, что файлы, сгенерированные из PowerShell, начинаются с BOM и содержат пар CRLF!

Мой сценарий Perl имеет "binmode STDOUT" директива и действительно работает правильно в нормальном dosbox.

Действительно ли это - ошибка или ошибка в PowerShell или команде меры? Это влияло на других, создающих двоичные файлы средствами кроме Perl?

Поиск с помощью Google ничего не поднял до сих пор. Я использую Perl 5.12, PowerShell v1.0 и Windows XP.

0
задан 12.01.2011, 04:22

1 ответ

Это вызвано тем, что PowerShell будет рассматривать вывод как строки по умолчанию. Строки в.NET являются Unicode, так, чтобы был вывод по умолчанию PowerShell.

Я предполагаю, что Вы используете PowerShell для записи вывода в файл? Если так, затем с помощью "Содержание Набора - Кодирование Байта" устранит проблему.

Measure-Command {& "c:\myscript.pl" | Set-Content "C:\myoutput.bin" -Encoding Byte}
0
ответ дан 27.11.2019, 18:35

Теги

Похожие вопросы