[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