Eduardo, obrigado pela resposta.

O modulo que faz o download(WWW::YouTube::Download) ja instrue que o arquivo é 
binario, esse modulo exclue a necessidade que fazer um 'open OUT, ...;' pois 
ele ja contem esse comando, inclusive passando em modo binario:
 99    open my $wfh, '>', $file or Carp::croak $file, " $!";
100    binmode $wfh;
Date: Sun, 28 Oct 2012 23:38:55 -0300
From: [email protected]
To: [email protected]
Subject: Re: [Rio-pm] Problemas com download

Olá, Aureliano, tudo bom?

Não costumo ter tempo de ver emails do grupo, nem de participar dos encontros. 
Lamentável.

Mas a ausência de respostas dessa thread, aliado a um eventual whisky 
descompromissado na frente do PC, fez eu estar aqui respondendo :)


Desconheço os módulos que você está usando, nunca precisei deles. Mas dei uma 
olhada no seu código, e duas coisas chamaram minha atenção:

1. Você disse ter problemas para salvar um arquivo binário em ambiente Windows.


2. Você passou o seguinte código:
open IN, $ARGV[0] or die $!;
save_vd (vdid($_)) foreach (<IN>);

Sendo que essa save_vd não tem uma instrução binmode. Tá com cara que você 
precisa dar um binmode. Vou explicar...


Quando precisamos salvar em disco um arquivo binário dentro de um "not 
Windows", a gente escreve o arquivo e pronto. Dentro de um Windows, não basta 
escrever o arquivo, tem que colocar uma instrução (após o open) dizendo que o 
arquivo é binário. Tipo isso:

open (OUT, ">video.flv");
binmode(OUT);
print OUT $bytes;
close(OUT);

Já segue o link para o Perldoc :)
http://perldoc.perl.ourg/fnctions/binmode.html


Perl Forever!!!!

Um abraço.



2012/10/28 Aureliano Guedes <[email protected]>





Ola Monges,
Mais uma vez venho incomodar com meus problemas.

Aparentemente o modulo WWW::YouTube::Download não tem nenhum problema, mas 
quando eu uso em ambiente Windows ele salva o arquivo com defeitos, de forma 
que acaba não sendo lido pelos reprodutores de audio e video.


meu codigo -> http://pastebin.com/k7v6rWCr

Ja estou sem ideia de o que fazer. Imagino que isso se deva porque o Perl do 
Windows (como ja havia dito o Stanislaw) subistitui o CR por CRLF, isso deveria 
ser contornado usando binmode no filehandle.

No caso deste modulo, isso já é feito:
 99    open my $wfh, '>', $file or Carp::croak $file, " $!";
100    binmode $wfh;

ref: 
https://metacpan.org/source/XAICRON/WWW-YouTube-Download-0.41/lib/WWW/YouTube/Download.pm



Não entendo portanto porque o arquivo vem com problemas.

Sera que se eu abrir o arquivo em modo binario e trocar todos CRLF por CR 
funcionaria?? Se sim como fazer isso??
                                          

_______________________________________________

Rio-pm mailing list

[email protected]

http://mail.pm.org/mailman/listinfo/rio-pm



_______________________________________________
Rio-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/rio-pm                                      
  
_______________________________________________
Rio-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/rio-pm

Responder a