This function returns from a subroutine (or eval) with the value specified. (In the absence of an explicit return, the value of the last expression evaluated is returned.) Use of return outside of a subroutine or eval is verboten, and results in a fatal error. Note also that an eval cannot do a return on behalf of the subroutine that called the eval.
The supplied expression will be evaluated in the context of the subroutine
invocation. That is, if the subroutine was called in a scalar context,
EXPR is also evaluated in scalar context. If the
subroutine was invoked in a list context, then
is also evaluated in list context, and can return a list value. A return with
no argument returns the undefined value in scalar context, and a null list in
list context. The context of the subroutine call can be determined from within
the subroutine by using the (misnamed) wantarray function.