8.3 Return ValuesA subroutine is always part of some expression. The value of the subroutine invocation is called the return value . The return value of a subroutine is the value of the return statement or of the last expression evaluated in the subroutine. For example, let's define this subroutine: sub sum_of_a_and_b { return $a + $b; }
The
last expression evaluated in the body of this subroutine (in fact, the only expression evaluated) is the sum of $a = 3; $b = 4; $c = sum_of_a_and_b(); # $c gets 7 $d = 3 * sum_of_a_and_b(); # $d gets 21 A subroutine can also return a list of values when evaluated in a list context. Consider this subroutine and invocation: sub list_of_a_and_b { return($a,$b); } $a = 5; $b = 6; @c = list_of_a_and_b(); # @c gets (5,6)
The last expression evaluated really means the last expression evaluated, rather than the last expression defined in the body of the subroutine. For example, this subroutine returns sub gimme_a_or_b { if ($a > 0) { print "choosing a ($a)\n"; returns $a; } else { print "choosing b ($b)\n"; returns $b; } } These are all rather trivial examples. It gets better when we can pass values that are different for each invocation into a subroutine instead of relying on global variables. In fact, that's coming right up. 
