in reply to Passing subroutines as arguments

You would dereference the scalar like this:
sub sum { my ($term, $a, $next, $b) = @_; if ($a > $b) { return(0); } else { return( &$term($a) + &sum( &$term, (&$next($a)), (&$next($b +)) ) ); } }