У меня есть сценарий Perl, который создает двоичный файл при сканировании файла очень крупного текста. Это производит к STDOUT, который я перенаправляю в командной строке в файл.
Для оптимизации его, я вношу изменения, затем видя, как низко это берет для выполнения. На Linux для этого я использую команду "времени". В Windows лучший способ ко времени программа, казалось, была к "команде меры" PowerShell. Это, казалось, хорошо работало, но я заметил, что сгенерированные файлы были больше. На исследовании я нашел, что файлы, сгенерированные из PowerShell, начинаются с BOM и содержат пар CRLF!
Мой сценарий Perl имеет "binmode STDOUT" директива и действительно работает правильно в нормальном dosbox.
Действительно ли это - ошибка или ошибка в PowerShell или команде меры? Это влияло на других, создающих двоичные файлы средствами кроме Perl?
Поиск с помощью Google ничего не поднял до сих пор. Я использую Perl 5.12, PowerShell v1.0 и Windows XP.
Это вызвано тем, что PowerShell будет рассматривать вывод как строки по умолчанию. Строки в.NET являются Unicode, так, чтобы был вывод по умолчанию PowerShell.
Я предполагаю, что Вы используете PowerShell для записи вывода в файл? Если так, затем с помощью "Содержание Набора - Кодирование Байта" устранит проблему.
Measure-Command {& "c:\myscript.pl" | Set-Content "C:\myoutput.bin" -Encoding Byte}