SPUG:Object property question

Fred Morris m3047 at inwa.net
Fri May 2 19:24:08 CDT 2003


Michael Wolf wrote;
>Sanford Morton <smorton at pobox.com> writes:
>
>[...]
>
>> sub new {        # constructor     ==> changes and prints first name
>>     my $class = shift;
>>     my $self = {};
>>     $self->_init(@_);
>
>NOPE!!!! Can't call a member method on an unblessed reference. Well,
>you can, but it doesn't do the magic of adding the referent as the
>first argument as you assume in the code below. But if you reshuffle
>the code, you could do it.
>
>>     return bless $self, $class;
>> }
>>

Hi Mike.

Isn't the problem that they've peeled the class off? (OK, they didn't bless
their mess either, but..) Granted their code won't work, but I think the
central question concerns overriding, not poor penmanship.

How about..

sub new ($;$$$ ) {

  return SUPER::new( @_ );

}

or...

sub new ($;$$$ ) {

    my $class = shift;

    return MotherOfAllMesses::new( $class, @_ );

}

????

??

Works for me. I think, anyway. I've done things like this, recently, even.

:-.


(It's more interesting when the MOAM takes different params to the default
new than the child, so you peel those off and pass them in order,
appropriately spiced.)

--

Fred
m3047 at inwa.net





More information about the spug-list mailing list