Powershell anulando Perl binmode?

0

Eu tenho um script Perl que cria um arquivo binário durante a digitalização de um arquivo de texto muito grande. Ele envia para STDOUT que eu redireciono na linha de comando para um arquivo.

Para otimizá-lo, estou fazendo alterações e, em seguida, vendo o quanto é preciso para ser executado. No Linux para isso eu uso o comando "time". No Windows, a melhor maneira de determinar o tempo de um programa parecia ser o "measure-command" do PowerShell. Isso pareceu funcionar bem, mas notei que os arquivos gerados eram maiores. No exame, descobri que os arquivos gerados a partir do PowerShell começam com uma lista de materiais e contêm pares CRLF!

Meu script Perl tem uma diretiva "binmode STDOUT" e funciona corretamente em um dosbox normal.

Isso é um bug ou falha de funcionalidade no PowerShell ou no comando de medição? Isso afetou outras pessoas que criam arquivos binários por outros meios além do Perl?

O Google não transformou nada até agora. Estou usando o Perl 5.12, o PowerShell v1.0 e o Windows XP.

    
por hippietrail 12.01.2011 / 03:16

1 resposta

0

Isso ocorre porque o PowerShell verá a saída como sequências por padrão. Strings no .NET são Unicode, então essa é a saída padrão do PowerShell.

Suponho que você esteja usando o PowerShell para gravar a saída em um arquivo? Em caso afirmativo, usar "Set-Content -Encoding Byte" corrigirá seu problema.

Measure-Command {& "c:\myscript.pl" | Set-Content "C:\myoutput.bin" -Encoding Byte}
    
por 12.01.2011 / 19:47