sub execute{ $self = shift; $coderef = shift; if ( @_ ) { $self->args->{$coderef}=\@_ ; #or [$self, @_] }elsif ( ref(my $args = $self->args{$coderef}) eq 'ARRAY') { @_ = @$args; } return &$coderef( @_ ); }