<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt">&nbsp;&nbsp;&nbsp; Oi Alceu, valeu mesmo pela dica, vou aderir a esta prática de usar o método de forma direta.<br>&nbsp;&nbsp;&nbsp; Eu já tinha feito a tentativa usando "$obj=Inquiry-&gt;new();", como a resposta foi a mesma eu voltei para a forma indireta. No entanto, eu acabei conseguindo eliminar a warning, não sei se foi da maneira correta, porém, funcionou. Inclusive já postei mensagem falando a respeito :<br>&nbsp;&nbsp;&nbsp; Eu estava adicionando o método "new" no @EXPORT dos packages, qdo tirei ele parou de reclamar, seguem códigos defeituosos e o que ficou funcionando :<br>&nbsp;&nbsp;&nbsp; <br><div>package Inquiry;<br>require Exporter;<br>use vars qw(@ISA @EXPORT);<br>use XML::Simple;<br>use Supplier::X;<br>@ISA=qw(Exporter);<br>@EXPORT=qw(new);<br>sub new{<br>&nbsp;&nbsp; &nbsp;my
 $self={};<br>&nbsp;&nbsp; &nbsp;$self-&gt;{suppliers}=();<br>&nbsp;&nbsp; &nbsp;$self-&gt;{xmlRequest}="";<br>&nbsp;&nbsp; &nbsp;$self-&gt;{parsedRequest}=();<br>&nbsp;&nbsp; &nbsp;$self-&gt;{xmlResponse}="";<br>&nbsp;&nbsp; &nbsp;return (bless $self);<br>}<br><br>&nbsp;&nbsp;&nbsp; o outro package :<br><br>package Supplier::X;<br>require Exporter;<br>use vars qw(@ISA @EXPORT);<br>use constant SELFCODE =&gt; 2;<br>@ISA=qw(Exporter);<br>@EXPORT=qw(new);<br>sub new{<br>&nbsp;&nbsp;&nbsp; my $self={};<br>&nbsp;&nbsp;&nbsp; # Getting day's password<br>&nbsp;&nbsp;&nbsp; my $dbh=bdData::mysqlConnect();<br>&nbsp;&nbsp;&nbsp; my $sth;<br>&nbsp;&nbsp;&nbsp; if ($main::TEST){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $sth=$dbh-&gt;prepare('SELECT password FROM passwords_test WHERE sendDate=NOW()');<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; else{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $sth=$dbh-&gt;prepare('SELECT password FROM passwords WHERE
 sendDate=NOW()');<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; $sth-&gt;execute();<br>&nbsp;&nbsp;&nbsp; ($self-&gt;{password})=$sth-&gt;fetchrow_array;<br>&nbsp;&nbsp;&nbsp; $sth-&gt;finish;<br>&nbsp;&nbsp;&nbsp; $dbh-&gt;disconnect;<br>&nbsp;&nbsp;&nbsp; #<br>&nbsp;&nbsp;&nbsp; return (bless $self);<br>}<br></div><br>&nbsp;&nbsp;&nbsp; Estavam assim; agora estão assim e funcionam sem o warning :<br>&nbsp;&nbsp;&nbsp; <br><div>package Inquiry;<br>
require Exporter;<br>
use vars qw(@ISA @EXPORT);<br>
use XML::Simple;<br>
use Supplier::X;<br>
@ISA=qw(Exporter);<br>
@EXPORT=qw();<br>
sub new{<br>
&nbsp;&nbsp; &nbsp;my $self={};<br>
&nbsp;&nbsp; &nbsp;$self-&gt;{suppliers}=();<br>
&nbsp;&nbsp; &nbsp;$self-&gt;{xmlRequest}="";<br>
&nbsp;&nbsp; &nbsp;$self-&gt;{parsedRequest}=();<br>
&nbsp;&nbsp; &nbsp;$self-&gt;{xmlResponse}="";<br>
&nbsp;&nbsp; &nbsp;return (bless $self);<br>
}<br>
<br>
&nbsp;&nbsp;&nbsp; o outro package :<br>
<br>
package Supplier::X;<br>
require Exporter;<br>
use vars qw(@ISA @EXPORT);<br>
use constant SELFCODE =&gt; 2;<br>
@ISA=qw(Exporter);<br>
@EXPORT=qw();<br>
sub new{<br>
&nbsp;&nbsp;&nbsp; my $self={};<br>
&nbsp;&nbsp;&nbsp; # Getting day's password<br>
&nbsp;&nbsp;&nbsp; my $dbh=bdData::mysqlConnect();<br>
&nbsp;&nbsp;&nbsp; my $sth;<br>
&nbsp;&nbsp;&nbsp; if ($main::TEST){<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $sth=$dbh-&gt;prepare('SELECT password FROM passwords_test WHERE sendDate=NOW()');<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; else{<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $sth=$dbh-&gt;prepare('SELECT password FROM passwords WHERE sendDate=NOW()');<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; $sth-&gt;execute();<br>
&nbsp;&nbsp;&nbsp; ($self-&gt;{password})=$sth-&gt;fetchrow_array;<br>
&nbsp;&nbsp;&nbsp; $sth-&gt;finish;<br>
&nbsp;&nbsp;&nbsp; $dbh-&gt;disconnect;<br>
&nbsp;&nbsp;&nbsp; #<br>
&nbsp;&nbsp;&nbsp; return (bless $self);<br>
}<br>
</div><br>&nbsp;&nbsp;&nbsp; Valeu novamente, abraço.<br><br>Daniel ® Antunes<br><em><font color="#007f40">profissional de informática</font></em><br><em><font color="#007f40">msn</font></em> daniel.legend@terra.com.br<br><em></em><em><font color="#007f40">yahoo-messenger</font></em> danielrantunes@yahoo.com.br<br><em></em><em><font color="#007f40">mobile</font></em> + 55 11 8965 2999<br><em><font color="#007f40">gnu/linux user</font></em> #238553<div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Mensagem original ----<br>De: Alceu Rodrigues de Freitas Junior &lt;glasswalk3r@hotmail.com&gt;<br>Para: Cascavel Perl Mongers &lt;cascavel-pm@pm.org&gt;<br>Enviadas: Terça-feira, 10 de Julho de 2007 15:27:04<br>Assunto: Re: [Cascavel-pm] "Subroutine new redefined at"<br><br>

<style>
P
{
margin:0px;padding:0px;}
body
{
FONT-SIZE:10pt;FONT-FAMILY:Tahoma;}
</style>
<blockquote><hr id="EC_stopSpelling">Date: Tue, 10 Jul 2007 10:26:49 -0700<br>From: danielrantunes@yahoo.com.br<br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">&nbsp;&nbsp;&nbsp; Tenho uma classe/package chamada Supplier::X e tenho uma classe/package chamada Inquiry.<br>&nbsp;&nbsp;&nbsp; Na classe Inquiry eu chamo a classe&nbsp; X<br><br>&nbsp;&nbsp;&nbsp; use Supplier::X<br><br>&nbsp;&nbsp;&nbsp; E crio objetos : my $obj=new Supplier::X(); dentro desta classe Inquiry.<br>&nbsp;&nbsp;&nbsp; Até aí sem novidades, o Supplier::X faz suas declarações e processamentos normalmente.<br>&nbsp;&nbsp;&nbsp; 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" :<br><br>&nbsp;&nbsp;&nbsp; my $inquiry=new
 Inquiry();<br><br></div></blockquote>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:<br><br>"Another way to call a constructor<br>Perl provides a second syntax for calling a constructor, or any other method belonging to a<br>class. It’s known as the indirect object syntax, and it’s already familiar to you. We’ll discuss it<br>here, and then you should tear out this page and eat it, so that you’ll never be tempted to use<br>the syntax. You’ll see why shortly."<br><br>Agradeça eu não ter comido a página; também acho bastante claro o que ele quiz dizer. Procure sempre usar:<br><br>my $object = Class::Something-&gt;new();<br><blockquote><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">&nbsp;&nbsp;&nbsp; Acontece que qdo vou executar o script de primeiro nível que é um server
 :<br><br>daniel@sun4w_nodeF:~/bin/inquiry-server-2$ ./inquiry-server.pl -v -p 10011<br>Subroutine new redefined at /home/daniel/bin/inquiry-server-2/Inquiry.pm line 147.<br>--verbose<br>Inquiry server started, listen on 10011 port.<br></div></blockquote>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.<br><blockquote><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">&nbsp;&nbsp;&nbsp; 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.<br></div></blockquote><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">danielrantunes++ #por tentar se virar sozinho<br><br>[]'s<br>Alceu<br></div><blockquote></blockquote><br><SPAN
 style="width:100%;height:2px;border-bottom:1px solid rgb(212,208,200); border-top:1px solid rgb(128,128,128);background-color:black;overflow:hidden; margin:8px 0px;"></SPAN>Play free games, earn tickets, get cool prizes! Join Live Search Club.&nbsp;&nbsp; <a rel="nofollow" target="_blank" href="http://club.live.com/home.aspx?icid=CLUB_wlmailtextlink">Join Live Search Club!</a><div>_______________________________________________<br>Cascavel-pm mailing list<br>Cascavel-pm@pm.org<br><a target="_blank" href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a></div></div><br></div></div><br>



      <hr size=1>Novo <a href="http://yahoo.com.br/oqueeuganhocomisso ">Yahoo! Cadê?</a> - Experimente uma nova busca. </body></html>