Eden, obrigado, funcionou perfeitamente!<br><br>Bolha<br><br><div class="gmail_quote">On Nov 2, 2007 8:30 PM, eden <<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>> 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 <<a href="mailto:lucasrosada@gmail.com">lucasrosada@gmail.com</a>> wrote:<br>> Boa noite, pessoas!<br>><br>> 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>> filha de <a href="http://classe.pm" target="_blank">classe.pm</a>. Seguem os códigos:
<br>><br>> =========<br>> package filha;<br>><br>> use classe;<br>> our @ISA = qw(classe);<br>><br>> use vars qw(@ISA);<br>> sub new {<br>> my $class = "filha";<br>><br>> $class->SUPER::new;
<br>> }<br>> 1;<br>> ==========<br>><br>> ==========<br>> #!/usr/bin/perl<br>><br>> package classe;<br>><br>> use strict;<br>><br>> sub new {<br>> my $class = "classe";<br>
> my $self = {"a" => "b"};<br>> bless ($self, $class);<br>> }<br>><br>> sub func {<br>> my $self = shift;<br>><br>> print $self->{"a"};<br>> }<br>
><br>> 1;<br>> ========<br>><br>> Esse código, pelo que testei, funciona perfeitamente, por exemplo, quando eu<br>> instancia uma filha e chamo o método func, presente na classe pai.<br>> No entanto, pelo que me resta de lembranças de quando fucei OO em perl, ao
<br>> invés de fazer<br>> sub new {<br>> my $class = "classe"<br>><br>> eu deveria fazer<br>> sub new {<br>> my $class = shift;<br>><br>> O problema é que usando o shift não funciona, ele me retorna um mensagem de
<br>> erro quando tento instanciar a filha (pois ele não conhece um SUPER).<br>> Os arquivos problemáticos estão anexados.<br>> Gostaria que alguém me ajudasse dizendo o que estou fazendo de errado ou se<br>> algo mudou e eu não percebi.
<br><br></div></div>Sim, você precisa chamar classe->new, e filha->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>"Café clareia as idéias, apesar de amarelar os dentes" <br>-- Bolha