In Control flow§
See primary documentation in context for return
The sub return
will stop execution of a subroutine or method, run all relevant phasers and provide the given return value to the caller. The default return value is Nil
. If a return type constraint is provided it will be checked unless the return value is Nil
. If the type check fails the exception X::TypeCheck::Return
is thrown. If it passes a control exception is raised and can be caught with CONTROL.
Any return
in a block is tied to the first Routine
in the outer lexical scope of that block, no matter how deeply nested. Please note that a return
in the root of a package will fail at runtime. A return
in a block that is evaluated lazily (e.g. inside map
) may find the outer lexical routine gone by the time the block is executed. In almost any case last
is the better alternative. Please check the functions documentation for more information on how return values are handled and produced.