I think you've got things reversed. log_to_handle() is not part of the framework, it's a function that Tom already has lying around. The framework does it's logging by running a coderef you provide and passing in the log message as the signle argument.
# deep inside the framework
&$logger("frobnication successful");
Tom's problem is that his log_to_handle() function is expecting several arguments including a filehandle and so he can't reuse in the framework. He would need it to be
# deep inside the framework
&$logger($LOGHANDLE, "frobnication successful");
Currying allows Tom to take log_to_handle and turn it into a function that already knows what handle to use and only needs a single argument. One way to do that is
my $logger = sub {
my $msg = shift;
log_to_handle($MYHANDLE, $msg);
};
and then pass $logger into the framework. Of course that's a lot more typing than we'd like so with AutoCurry you can just do
my $logger = log_to_handle_c($MYHANDLE);
the _c at the end means that rather than running the log_to_handle function we want a new coderef which will be suitable for the framework.