sub

This is subroutine definition, not a real function per se. With just a
NAME (and possibly prototypes or attributes), it's just a forward declaration.
Without a NAME, it's an anonymous function declaration, and does actually
return a value: the CODE ref of the closure you just created. See perlsub
and perlref for details.