sub join { my ( $delim, @strings ) = @_; reduce { $a . $delim . $b } @strings; } but in this case the concatenation operator is not used directly as the a curried higher order function