$w = wrapper->instance; $w->table; # Dies with the error "Could not delegate wrapper::table" package wrapper; sub instance { return bless { schema => database->new() }, shift(); } sub schema { $_[0]->{schema} } use Class::Delegation send => '-ALL', to => 'schema'; package database; sub new { bless {}, shift() } sub table { $_[0]->column } sub column { die "Some exception" }