[Rio-pm] print() on closed filehandle

Aureliano Guedes guedes_1000 em hotmail.com
Domingo Outubro 21 11:38:34 PDT 2012


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";
}
 		 	   		  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20121021/16bde2e2/attachment.html>


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