$bot->$method(\&GetInput, \&ShowOutput); # In your main program, you have to define sub GetInput{...}, # and sub ShowOutput{...} # Alternatively, use anonymous subs : $bot->$method(sub{print $_[0]; return scalar <>}, sub{print $_[0] . "\n"}); #### sub method{ my ($self, $getInput,$SendOutput) = @_; my $input = $getInput->("Optional PROMPT parameter, if any\n"); #.. Do something with $input, and generate $output $SendOutput->($output); }