Obrigado a todos que responderam!<br><br>Então... Frederico, é tipo um plugin mesmo, mas é um plugin para o objeto, como o Eden mostrou. Olhei o Module::Pluggable mas ele não faz o que quero, pois o método seria dinâmico.<br>
<br>A lógica do meu objeto seria:<br><br>1) tenho X &quot;plugins&quot; carregados<br>2) recebi uma chamada para método inexistente na minha interface ( $objeto-&gt;foo(), $objeto-&gt;bar(), ... )<br>3) Passo essa chamada para meus plugins<br>
<br>Acho que foi isso que o Eden explicou (preciso estudar esse AUTOLOAD). Agora com os comentários (especialmente Eden e Adriano) pensei em uma alternativa mais elegante (?):<br><br>1) carrego X &quot;plugins&quot; durante o &quot;import&quot; da minha classe<br>
2) cada um deles anexa seu código à minha Classe, e agora um my $objeto = Classe-&gt;new() fará o objeto ter todos os métodos existentes não só nele como em cada plugin.<br><br>Ninguém nunca teve esse problema? Será que estou &quot;viajando&quot; (não programo OO há muito tempo, desculpem qualquer coisa)? Existe outra forma (mais elegante) ou pattern em Perl para atingir os mesmos resultados?<br>
<br>Se houver uma forma de &quot;capturar&quot; e tratar chamadas a métodos inexistentes ao meu objeto, posso usar o Module::Pluggable para resolver meu problema...<br><br><br>Vlw,<br><font color="#888888"><font color="#888888"><br>
PH</font>
</font><br><br><br><div class="gmail_quote">2008/11/6 Eden Cardim <span dir="ltr">&lt;<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2008/11/6 Solli Honorio &lt;<a href="mailto:shonorio@gmail.com">shonorio@gmail.com</a>&gt;:<br>
<div class="Ih2E3d">&gt; Eden, o &#39;use base&#39; não resolve o problema ?<br>
<br>
</div>Bom, levando ao pé da letra, não. Ele disse que quer adicionar um<br>
método ao objeto, e &#39;use base&#39; vai adicionar à classe. Em JavaScript<br>
você faria:<br>
<br>
foo = new Object;<br>
<br>
foo.meth = function () { alert(&#39;foo&#39;) };<br>
foo.meth()<br>
<br>
bar = new Object;<br>
<br>
bar.meth = function () { alert(&#39;bar&#39;) }<br>
bar.meth()<br>
<br>
Por esse motivo, JavaScript é realmente orientado a objetos, a maioria<br>
das outras linguagens que alegam ser orientadas a objetos na verdade<br>
são orientadas a classes, inclusive Java e Python. Perl também é<br>
orientado a classes, mas como sempre, dá pra hackear algo parecido :).<br>
<br>
use warnings;<br>
use strict;<br>
<br>
package Object;<br>
<br>
use Carp;<br>
<br>
sub new {<br>
 &nbsp;return bless {}, shift;<br>
}<br>
<br>
sub AUTOLOAD {<br>
 &nbsp;my($self) = @_;<br>
 &nbsp;our $AUTOLOAD;<br>
 &nbsp;my $meth = (split /::/, $AUTOLOAD)[-1];<br>
 &nbsp;my $code = $self-&gt;{$meth};<br>
 &nbsp;if(ref $code eq &#39;CODE&#39;) {<br>
 &nbsp; &nbsp;goto &amp;$code;<br>
 &nbsp;}<br>
 &nbsp;croak &quot;couldn&#39;t find $meth via package ${\ref $self}&quot;;<br>
}<br>
<br>
package main;<br>
$\ = $/;<br>
<br>
my $foo = Object-&gt;new;<br>
$foo-&gt;{method} = sub { print &#39;Oi, eu sou um método que só existe em $foo&#39; };<br>
my $bar = Object-&gt;new;<br>
$bar-&gt;{method} = sub { print &#39;Oi, eu sou um método que só existe em $bar&#39; };<br>
<br>
for($foo, $bar) {<br>
 &nbsp;$_-&gt;method;<br>
}<br>
$foo-&gt;some_other_method;<br>
<br>
Se você usar herança, o mesmo método em dois objetos diferentes da<br>
mesma classe vai invocar o mesmo código.<br>
<br>
ALERTA: não use isso a não ser que você saiba *BEM* o que está fazendo :)<br>
<div class="Ih2E3d"><br>
&gt; Pedro eu não entendi bem o teu problema, mas se for relacionado a herança,<br>
&gt; você pode encontrar informações no &#39;perldoc perlboot&#39;.<br>
<br>
</div>É, eu também não entendi muito bem porque ele quer fazer isso,<br>
provavelmente ele quer Module::Pluggable como o Frederico falou.<br>
<font color="#888888"><br>
--<br>
 &nbsp; Eden Cardim &nbsp; &nbsp; &nbsp; Need help with your Catalyst or DBIx::Class project?<br>
 &nbsp;Code Monkey &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.shadowcat.co.uk/catalyst/" target="_blank">http://www.shadowcat.co.uk/catalyst/</a><br>
&nbsp;Shadowcat Systems Ltd. &nbsp;Want a managed development or deployment platform?<br>
<a href="http://edenc.vox.com/" target="_blank">http://edenc.vox.com/</a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.shadowcat.co.uk/servers/" target="_blank">http://www.shadowcat.co.uk/servers/</a><br>
</font><div><div></div><div class="Wj3C7c">_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</div></div></blockquote></div><br>