package thingy; use strict; use warnings; sub new { my($class, $name, $coderef, @args) = @_; #insert checking for proper values here, removed for readability's sake my $self = {}; bless($class, $self); $self->{'Coderef'} = $coderef; $self->{'Args'} = \@args; return $self; } sub execute { my $self = shift; $self->{'Coderef'}(@{$self->{'Args'}}); } sub details { my $self = shift; print "executes coderef *insert black magic here* with arguments " . join(' ', @{$self->{'Args'}}) . "\n"; }