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_1...@hotmail.com> > Não ainda, vou experimentar e volto com os resultados. > > ------------------------------ > From: tiago.pecze...@gmail.com > Date: Sun, 21 Oct 2012 17:54:30 -0200 > > To: rio-pm@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_1...@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.pecze...@gmail.com > Date: Sun, 21 Oct 2012 17:25:59 -0200 > > To: rio-pm@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_1...@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.pecze...@gmail.com > Date: Sun, 21 Oct 2012 16:57:12 -0200 > To: rio-pm@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....@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_1...@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@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > _______________________________________________ > Rio-pm mailing list > Rio-pm@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > Rio-pm@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > Rio-pm@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm >
_______________________________________________ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm