Return Values
The subroutine is always invoked as part of an expression,
even if the result of the expression isn’t being used. When we invoked
&marine earlier, we were
calculating the value of the expression containing the invocation, but
then throwing away the result.
Many times, you’ll call a subroutine and actually do something with the result. This means that you’ll be paying attention to the return value of the subroutine. All Perl subroutines have a return value—there’s no distinction between those that return values and those that don’t. Not all Perl subroutines have a useful return value, however.
Since all Perl subroutines can be called in a way that needs a return value, it’d be a bit wasteful to have to declare special syntax to “return” a particular value for the majority of the cases. So Larry made it simple. As Perl is chugging along in a subroutine, it is calculating values as part of its series of actions. Whatever calculation is last performed in a subroutine is automatically also the return value.
For example, let’s define this subroutine:
sub sum_of_fred_and_barney {
print "Hey, you called the sum_of_fred_and_barney subroutine!\n";
$fred + $barney; # That's the return value
}The last expression evaluated in the body of this subroutine is
the sum of $fred and $barney, so the sum of $fred and $barney will be the return value. Here’s that
in action:
$fred = 3; $barney = 4; $wilma = &sum_of_fred_and_barney; # $wilma gets 7 print "\$wilma is $wilma.\n"; $betty = 3 * &sum_of_fred_and_barney; ...