package Foo; # BaseClass sub new{ my $class = shift; return bless {}, $class; } sub fx{ my $self = shift; $self->{FX} = "xxxxxxxxxxxxx xxxxxxxxxxxxxx xxx"; } ########################################################################### package Bar; use base 'Foo'; # Inherit from Foo sub new{ my $class = shift; my $foo = $class->SUPER::new; return bless {FOO => $foo}, $class; } ######################## OVERLOAD Foo::Methods ############################ sub fx{ my $self = shift; $self->{FOO}->SUPER::fx; } ########################################################################### package main; use Data::Dump qw(dump); my $o = Bar->new; $o->fx; print dump($o); # alles am rechten Platz