<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"> Oi Alceu, valeu mesmo pela dica, vou aderir a esta prática de usar o método de forma direta.<br> Eu já tinha feito a tentativa usando "$obj=Inquiry->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> 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> <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> my
$self={};<br> $self->{suppliers}=();<br> $self->{xmlRequest}="";<br> $self->{parsedRequest}=();<br> $self->{xmlResponse}="";<br> return (bless $self);<br>}<br><br> o outro package :<br><br>package Supplier::X;<br>require Exporter;<br>use vars qw(@ISA @EXPORT);<br>use constant SELFCODE => 2;<br>@ISA=qw(Exporter);<br>@EXPORT=qw(new);<br>sub new{<br> my $self={};<br> # Getting day's password<br> my $dbh=bdData::mysqlConnect();<br> my $sth;<br> if ($main::TEST){<br> $sth=$dbh->prepare('SELECT password FROM passwords_test WHERE sendDate=NOW()');<br> }<br> else{<br> $sth=$dbh->prepare('SELECT password FROM passwords WHERE
sendDate=NOW()');<br> }<br> $sth->execute();<br> ($self->{password})=$sth->fetchrow_array;<br> $sth->finish;<br> $dbh->disconnect;<br> #<br> return (bless $self);<br>}<br></div><br> Estavam assim; agora estão assim e funcionam sem o warning :<br> <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>
my $self={};<br>
$self->{suppliers}=();<br>
$self->{xmlRequest}="";<br>
$self->{parsedRequest}=();<br>
$self->{xmlResponse}="";<br>
return (bless $self);<br>
}<br>
<br>
o outro package :<br>
<br>
package Supplier::X;<br>
require Exporter;<br>
use vars qw(@ISA @EXPORT);<br>
use constant SELFCODE => 2;<br>
@ISA=qw(Exporter);<br>
@EXPORT=qw();<br>
sub new{<br>
my $self={};<br>
# Getting day's password<br>
my $dbh=bdData::mysqlConnect();<br>
my $sth;<br>
if ($main::TEST){<br>
$sth=$dbh->prepare('SELECT password FROM passwords_test WHERE sendDate=NOW()');<br>
}<br>
else{<br>
$sth=$dbh->prepare('SELECT password FROM passwords WHERE sendDate=NOW()');<br>
}<br>
$sth->execute();<br>
($self->{password})=$sth->fetchrow_array;<br>
$sth->finish;<br>
$dbh->disconnect;<br>
#<br>
return (bless $self);<br>
}<br>
</div><br> 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 <glasswalk3r@hotmail.com><br>Para: Cascavel Perl Mongers <cascavel-pm@pm.org><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;"> Tenho uma classe/package chamada Supplier::X e tenho uma classe/package chamada Inquiry.<br> Na classe Inquiry eu chamo a classe X<br><br> use Supplier::X<br><br> E crio objetos : my $obj=new Supplier::X(); dentro desta classe Inquiry.<br> Até aí sem novidades, o Supplier::X faz suas declarações e processamentos normalmente.<br> 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> 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->new();<br><blockquote><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"> 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;"> 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. <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>