in reply to Generic/Variable/Dynamic Subroutines? (Not a redefine)

Just pass the method into the sub:

sub Call { my $self = shift; my $method = shift; my $it = $self->OStream->$method($_[0]); $self->Trace(_CallerStr($it)); return $it; };

If you want to call the methods by their name without them being defined, there is AUTOLOAD:

our $AUTOLOAD; # needs to be a package global sub AUTOLOAD { $AUTOLOAD =~ s/.*:://; # strip package name return if $AUTOLOAD eq 'DESTROY'; splice @_, 1, 0, $AUTOLOAD; # package/object, method, rest of args goto \&Call; }
perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'