package SubBrowser; sub new { my $class = shift; $class = ref($class) || $class; my $package = shift; my $subname = shift; # assume $package is a reference to a hash of in-memory source code, # keyed by subroutine name my $sub; eval { $sub = $package->{$subname}; }; # ooh, tricky bless($sub, $class); return $sub; } sub display_args { # get data from $package } sub display_returns { # get data from $package } sub test { my $self = shift; return &$self; }