{ package Proxy; our $AUTOLOAD; sub AUTOLOAD { my $self = shift; my $name = $AUTOLOAD; $name =~ s/.*://; return if $name eq 'DESTROY'; $self->{bar}->$name(@_); } sub isa { (shift)->{bar}->isa(@_) } sub can { (shift)->{bar}->can(@_) } } sub some_sub { my $ref = shift; %$ref = (bar => $bar); bless $ref, "Proxy"; }