You invoke a subroutine from within any expression by following the subroutine name with parentheses, as in:
say_hello(); # a simple expression $a = 3 + say_hello() # part of a larger expression for ($x = start_value(); $x < end_value(); $x += increment()) { ... } # invoke three subroutines to define values
A subroutine can invoke another subroutine, and that subroutine can in turn invoke another subroutine, and so on, until all available memory is filled with return addresses and partially computed expressions. (No mere eight or 32 levels could satisfy a real programmer.)