[Cascavel-pm] "Subroutine new redefined at"

Alceu Rodrigues de Freitas Junior glasswalk3r em hotmail.com
Terça Julho 10 11:27:04 PDT 2007


Date: Tue, 10 Jul 2007 10:26:49 -0700From: danielrantunes em yahoo.com.br    Tenho uma classe/package chamada Supplier::X e tenho uma classe/package chamada Inquiry.    Na classe Inquiry eu chamo a classe  X    use Supplier::X    E crio objetos : my $obj=new Supplier::X(); dentro desta classe Inquiry.    Até aí sem novidades, o Supplier::X faz suas declarações e processamentos normalmente.    Acontece que na classe Inquiry eu declaro um método (ou member function como chamamos em C) "new" também, pq no script de primeiro nível chamado "inquiry-server.pl" eu crio objetos "Inquiry" :    my $inquiry=new
 Inquiry();Você primeiramente deveria parar de usar métodos indiretos de chamar um construtor. Isso evita que você atire no seu pé. Vou comentar um trecho do livro do Damian Conway:"Another way to call a constructorPerl provides a second syntax for calling a constructor, or any other method belonging to aclass. It’s known as the indirect object syntax, and it’s already familiar to you. We’ll discuss ithere, and then you should tear out this page and eat it, so that you’ll never be tempted to usethe syntax. You’ll see why shortly."Agradeça eu não ter comido a página; também acho bastante claro o que ele quiz dizer. Procure sempre usar:my $object = Class::Something->new();    Acontece que qdo vou executar o script de primeiro nível que é um server :daniel em sun4w_nodeF:~/bin/inquiry-server-2$ ./inquiry-server.pl -v -p 10011Subroutine new redefined at /home/daniel/bin/inquiry-server-2/Inquiry.pm line 147.--verboseInquiry server started, listen on 10011 port.Me parece que esse problema está sendo causado justamente por causa da chamada de método indireta. Faça um teste aí. E se puder poste o código do Inquiry.pm (caso não resolva) na lista.    Eu já dei uma caçada na web buscando algum meio de contornar esta warning, pelo que entendi ele está reclamando que eu tenho o método "new" no package Supplier::X e no package Inquiry.danielrantunes++ #por tentar se virar sozinho[]'sAlceu
_________________________________________________________________
Make every IM count. Download Windows Live Messenger and join the i’m Initiative now. It’s free. 
http://im.live.com/messenger/im/home/?source=TAGWL_June07
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070710/137ac3f8/attachment.html 


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