in reply to Overriding methods and Inheritance
There's more you'd have to do in order to make sure you play properly with overload and others. But, that's the gist of it. And, the runtime cost is quite minimal, probably on the order of 1-2%. And, you're very loosely couple with OtherModule, meaning that as OtherModule changes, you don't have to change with it.package MyModule; use OtherModule; sub new { my $class = shift; my $obj = OtherModule->new( @_ ); return bless \$obj, $class; } sub AUTOLOAD { my $self = shift; my ($method) = (our $AUTOLOAD =~ /([^:]+)$/; return eval { ${$self}->$method( @_ ); } } # These are in UNIVERSAL, so need to be overridden because # AUTOLOAD won't catch them. sub can { my $self = shift; return eval { ${$self}->can( @_ ); } } sub isa { my $self = shift; return eval { ${$self}->isa( @_ ); } } 1; __END__
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Overriding methods and Inheritance
by bamaindk (Initiate) on Jan 08, 2008 at 09:29 UTC | |
by dragonchild (Archbishop) on Jan 08, 2008 at 13:41 UTC |