<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"> Na verdade o METHOD_A é uma constante do módulo que aponta para um método da operadora em questão.<br> Tipo :<br><br>use constant METHOD_A 'getRGInfo';<br><br> Minha intenção é de "tentar" manter um padrão nestes módulos pq são/serão muitos.<br><div> Sobre usar o "new" de forma indireta, já tinham me falado isto, eu modifiquei em grande parte do código. Mas este trecho em particular faz parte do módulo chave do sistema e eu acabei não mexendo. Eu já procurei uma referência do por que desta "Best Practice", mas não encontrei, vc poderia me indicar algum lugar onde eu possa compreender isto ?<br> Novamente obrigado.<br> </div>Daniel ® Antunes<br><em><font color="#007f40">profissional
de informática</font></em><br><em><font color="#007f40"></font></em><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: Daniel Ruoso <daniel@ruoso.com><br>Para: Cascavel Perl Mongers <cascavel-pm@pm.org><br>Enviadas: Segunda-feira, 7 de Abril de 2008 14:51:35<br>Assunto: Re: [Cascavel-pm] Maneira melhor para escrever e reduzir trecho de código.<br><br>Seg, 2008-04-07 às 10:36 -0700, Daniel ® Antunes escreveu:<br>> Olá amigos da lista, boa tarde...<br>> Gostaria de saber se há a possibilidade de escrever estas linhas<br>> de forma sintética :<br>> if ($sup eq 'ABC'){<br>> $self->{book}=new
Sup::ABC($xml,Sup::ABC::METHOD_A);<br>> }<br>> elsif ($sup eq 'D'){<br>> $self->{book}=new Sup::D($xml,Sup::D::METHOD_A);<br>> }<br>> elsif ($sup eq 'EF'){<br>> $self->{book}=new Sup::EF($xml,Sup::EF::METHOD_A);<br>> }<br>> elsif ($sup eq 'GHIJK'){<br>> $self->{book}=new Sup::GHIJK($xml,Sup::GHIJK::METHOD_A);<br>> }<br><br><br>{<br> my $package = 'Sup::'.$sup;<br> $self->{book} = $package->new($xml, $package->METHOD_A);<br>}<br><br>Algumas
observações...<br><br>1 - *NUNCA* use a notação indireta. Sempre usa 'Module->new' no lugar de<br>'new Module'.<br>2 - O código acima pressupõe que METHOD_A é realmente um método e não<br>uma subrotina.<br><br>Se METHOD_A for realmente uma subrotina,<br><br>use UNIVERSAL qw(can);<br>...<br>{<br> my $package = 'Sub::'.$sup;<br> my $sub_a = $package->can('METHOD_A')<br> or die 'No method a';<br> $self->{book} = $package->new($xml, $sub_a->());<br>}<br><br>daniel<br><br>_______________________________________________<br>Cascavel-pm mailing list<br><a ymailto="mailto:Cascavel-pm@pm.org" href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a></div><br></div></div><br>
<hr size=1>Abra sua conta no <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.mail.yahoo.com/">Yahoo! Mail</a>, o único sem limite de espaço para armazenamento!
</body></html>