sub - declare a subroutine, possibly anonymously
sub 
BLOCK
sub 
NAME
sub 
NAME 
BLOCK
This is subroutine definition, not a real function per se. With just a 
NAME (and possibly prototypes), 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
 the perlsub manpage and
the perlref manpage for details.