Eden, obrigado, funcionou perfeitamente!<br><br>Bolha<br><br><div class="gmail_quote">On Nov 2, 2007 8:30 PM, eden &lt;<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c">On 11/2/07, Lucas F. Rosada &lt;<a href="mailto:lucasrosada@gmail.com">lucasrosada@gmail.com</a>&gt; wrote:<br>&gt; Boa noite, pessoas!<br>&gt;<br>&gt; Primeiramente, tenho 2 classes: <a href="http://classe.pm" target="_blank">
classe.pm</a> e <a href="http://filha.pm" target="_blank">filha.pm</a>. A classe <a href="http://filha.pm" target="_blank">filha.pm</a> é<br>&gt; filha de <a href="http://classe.pm" target="_blank">classe.pm</a>. Seguem os códigos:
<br>&gt;<br>&gt; =========<br>&gt; package filha;<br>&gt;<br>&gt; use classe;<br>&gt; our @ISA = qw(classe);<br>&gt;<br>&gt; use vars qw(@ISA);<br>&gt; sub new {<br>&gt; &nbsp; &nbsp;my $class = &quot;filha&quot;;<br>&gt;<br>&gt; &nbsp; &nbsp;$class-&gt;SUPER::new;
<br>&gt; }<br>&gt; 1;<br>&gt; ==========<br>&gt;<br>&gt; ==========<br>&gt; #!/usr/bin/perl<br>&gt;<br>&gt; package classe;<br>&gt;<br>&gt; use strict;<br>&gt;<br>&gt; sub new {<br>&gt; &nbsp; &nbsp;my $class = &quot;classe&quot;;<br>
&gt; &nbsp; &nbsp;my $self = {&quot;a&quot; =&gt; &quot;b&quot;};<br>&gt; &nbsp; &nbsp;bless ($self, $class);<br>&gt; }<br>&gt;<br>&gt; sub func {<br>&gt; &nbsp; &nbsp;my $self = shift;<br>&gt;<br>&gt; &nbsp; &nbsp;print $self-&gt;{&quot;a&quot;};<br>&gt; }<br>
&gt;<br>&gt; 1;<br>&gt; ========<br>&gt;<br>&gt; Esse código, pelo que testei, funciona perfeitamente, por exemplo, quando eu<br>&gt; instancia uma filha e chamo o método func, presente na classe pai.<br>&gt; No entanto, pelo que me resta de lembranças de quando fucei OO em perl, ao
<br>&gt; invés de fazer<br>&gt; sub new {<br>&gt; &nbsp; &nbsp;my $class = &quot;classe&quot;<br>&gt;<br>&gt; eu deveria fazer<br>&gt; sub new {<br>&gt; &nbsp; &nbsp;my $class = shift;<br>&gt;<br>&gt; O problema é que usando o shift não funciona, ele me retorna um mensagem de
<br>&gt; erro quando tento instanciar a filha (pois ele não conhece um SUPER).<br>&gt; Os arquivos problemáticos estão anexados.<br>&gt; Gostaria que alguém me ajudasse dizendo o que estou fazendo de errado ou se<br>&gt; algo mudou e eu não percebi.
<br><br></div></div>Sim, você precisa chamar classe-&gt;new, e filha-&gt;new, invés de<br>classe::new e filha::new, respectivamente. Use my $class = shift<br>sempre, assim você pode se aproveitar do polimorfismo.<br><font color="#888888">
<br>--<br><a href="http://edenc.vox.com" target="_blank">edenc.vox.com</a><br>_______________________________________________<br>SaoPaulo-pm mailing list<br><a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">
http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br></font></blockquote></div><br><br clear="all"><br>-- <br>&quot;Café clareia as idéias, apesar de amarelar os dentes&quot; <br>-- Bolha