sub generate_method { my $self = shift; my ($name) = @_; my $method = ; return $method; } sub can { my $self = shift; my ($name) = @_; if ( ) { return $self->generate_method($name); } $self->SUPER::can($name); } sub AUTOLOAD { my $name = our $AUTOLOAD; $name =~ s/.*::([^:]+)$/$1/; my $self = shift; if ( ) { return $self->generate_method( $name )->(@_); } $self->SUPER::AUTOLOAD( @_ ); }