[Rio-pm] print() on closed filehandle

Stanislaw Pusep creaktive em gmail.com
Domingo Outubro 21 13:17:21 PDT 2012


Você usa Windows, não?
Neste caso, precisa dar um binmode($fh) logo após o open($fh, ...). Ou
então abrir o handle como open($fh, '>:raw', 'nome.mp3').
O erro acontece por que o Perl do Windows substitui byte \x0A pela
sequencia \x0D\x0A em arquivos "texto".
Em arquivo não-"texto", isso não é nada bom.

ABS()



2012/10/21 Aureliano Guedes <guedes_1000 em hotmail.com>

>  Não ainda, vou experimentar e volto com os resultados.
>
> ------------------------------
> From: tiago.peczenyj em gmail.com
> Date: Sun, 21 Oct 2012 17:54:30 -0200
>
> To: rio-pm em pm.org
> Subject: Re: [Rio-pm] print() on closed filehandle
>
> então alguma coisa acontece durante o transporte ou o protocolo de
> transmissão. estou sem tempo de analisar mas vc experimento usar o
> wireshark?
>
> 2012/10/21 Aureliano Guedes <guedes_1000 em hotmail.com>
>
>  MD5 diferente, ate o tamanho do arquivo é diferente, baixei o original
> pelo FF e a musica esta normal, alem, de que tem o tamanho de 6,16MB.
> Em contrapartida o arquivo obtido pelo script fica com 6,19MB.
>
> Ja tentei baixar denovo, continua o mesmo problema.
> ------------------------------
> From: tiago.peczenyj em gmail.com
> Date: Sun, 21 Oct 2012 17:25:59 -0200
>
> To: rio-pm em pm.org
> Subject: Re: [Rio-pm] print() on closed filehandle
>
> analise o arquivo original e o que vc esta salvando, vc pode ter
> corrompido algum byte. se o md5 dos dois for igual o problema é outro, se
> for diferente analise o que o ffmpeg -i diz do arquivo (ele vai analisar o
> cabeçalho do mp3).
>
> 2012/10/21 Aureliano Guedes <guedes_1000 em hotmail.com>
>
>  Realmente, um erro por falta de atenção. Agora deu certo.
>
> Contudo, os arquivos chegam com algum problema que não sei o que é.
>
> As musicas não tocam normalmente, elas ficam com um barulho estranho e
> quase não da para reconhecer a musica, é como se estivesse acelerado.
>
> Será que é problemas calsado devido a forma que estou manipulando esse
> tipo de arquivo?
>
> ------------------------------
> From: tiago.peczenyj em gmail.com
> Date: Sun, 21 Oct 2012 16:57:12 -0200
> To: rio-pm em pm.org
> Subject: Re: [Rio-pm] print() on closed filehandle
>
>
> sem falar que esta usando open com 2 argumentos. tente usar com 3
> argumentos separando o modo de abrir do nome do arquivo com uma virgula ao
> inves de um ponto para concatenar. alias vc pode interpolar assim
>
> open my $fh,">","$nome.mp3";
>
> ou
>
> open my $fh,">","${nome}.mp3";
>
> On Sun, Oct 21, 2012 at 4:54 PM, Ole Peter Smith <ole.ufg em gmail.com>wrote:
>
> espacos no nome do arquivo? (sempre, como letras acentuadas, abominavel...)
> 0le
> Send via Android
> On Oct 21, 2012 3:38 PM, "Aureliano Guedes" <guedes_1000 em hotmail.com>
> wrote:
>
>  Ola monges.
>
> Estou com problema para salvar arquivos *.mp3 recebidos via download.
>
> Ao salvar a mensagem retornada é 'print () on closed filehandle FH at
> C:\User\AG\Desktop\mes.pl  line 31.'.
>
> O sistema so retorna 'Invalid argument' quando uso o $!.
>
> Então usei o autodie para ver o que me retornava:
> "Can't open '>Thaeme e Thiago - Ai que do.mp3' for writing: at 'Invalid
> argument' C:\User\AG\Desktop\mes.pl  line 19."
>
> Enfim, não estou entendendo o erro retornado.
>
> http://pastebin.com/qxCMLv1V
>
> #!/usr/bin/env perl
>
> use common::sense;
> use WWW::Mechanize;
> use autodie;
>
>
> sub parse {
>     my ($self) = shift;
>     $self =~ s/\s+/\+/g;
>     chomp $self;
>     print "Now --> " . $self . "\n\n";
>     return ("http://www.buscamp3.org/busca/" . $self);
> }
>
> sub gd {
>     my ($self, $name) = @_;
>     print $self . " == " . $name . "\n\n";
>     open my $fh,">". $name . ".mp3";
>     my $m = WWW::Mechanize->new();
>     my $p = $m->get($self);
>     $p = $p->decoded_content;
>     $m->max_redirect(1);
>     my @Links = $m->links();
>     my $w = 0;
>     SWU: foreach my $link(@Links){
>         my @a = split ("/", $link->url());
>         if ($a[1] =~ m/dl/gi){
>             print "OK!\n";
>             my $c = $m->get("http://www.buscamp3.org" . $link->url());
>             print $fh $c->decoded_content;
>             close $fh;
>             $w = 1;
>         }
>         last SWU if ($w == 1);
>     }
>     undef $m;
> }
>
>
> open IN, $ARGV[0] or die;
>
> foreach (<IN>){
>     print "Search for: " . $_ . "\n";
>     my $a = parse($_);
>     gd($a, $_);
>     print "\n\n";
> }
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://pacman.blog.br
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://pacman.blog.br
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://pacman.blog.br
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20121021/60de578e/attachment.html>


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