[SP-pm] Res: Write Binary!

Luis Motta Campos luismottacampos em yahoo.co.uk
Sexta Abril 27 00:14:08 PDT 2007


On Apr 26, 2007, at 4:59 PM, Henrique Rennó wrote:
> Senão basta escrever os dados binários no arquivo.
> Abaixo uma matriz 5x5 com dados zero. Confira:
>
> <code>
> for($i=1;$i<5;$i++){for($j=1;$j<5;$j++){$matriz[$i][$j]=0;}}
> open (BINARIO, "> arq.bin"); binmode(BINARIO);
> for ($i=1;$i<5;$i++){for($j=1;$j<5;$j++){print BINARIO $matriz[$i] 
> [$j];}}
> </code>
>
> Essa seria a forma mais lógica e foi a que tentei primeiro. Se você  
> abrir o arq.bin com um editor de textos verá que os dados estão  
> escritos em texto puro.
>

   Gente, binmode() NÃO É CONVERSOR de dados!
   O PROGRAMADOR é obrigado a fornecer os dados no formato em que  
deseja que eles sejam gravados!
   Usar binmode() GARANTE que nem o Perl nem o SO vão fazer bobagem,  
DESDE QUE VOCÊ SAIBA O QUE ESTÁ ESCREVENDO!

   Use binmode() para infomar o Perl de que seu output para aquele  
filehandle (ou input) é binário, e não ascii, orientado a linhas.  
Isso altera a forma como o Perl (e o SO) le e interpreta os seus dados.

   Espero que agora fique claro para todo mundo.
   A manpage do binmode (perldoc -f binmode) é extensa e detalhada.  
Eu recomendo que os interessados leiam até o fim.

   Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}




Mais detalhes sobre a lista de discussão SaoPaulo-pm