To pass an object method into a subroutine, you can do this:
call_a_lot(10, $some_obj, "methname") sub call_a_lot { my ($count, $widget, $trick) = @_; for (my $i = 0; $i < $count; $i++) { $widget->$trick(); } }Or, you can use a closure to bundle up the object, its method call, and arguments:
my $whatnot = sub { $some_obj->obfuscate(@args) }; func($whatnot); sub func { my $code = shift; &$code(); }You could also investigate the can() method in the UNIVERSAL class (part of the standard perl distribution).