The return Operator
The return operator
immediately returns a value from a subroutine:
my @names = qw/ fred barney betty dino wilma pebbles bamm-bamm /;
my $result = &which_element_is("dino", @names);
sub which_element_is {
my($what, @array) = @_;
foreach (0..$#array) { # indices of @array's elements
if ($what eq $array[$_]) {
return $_; # return early once found
}
}
−1; # element not found (return is optional here)
}This subroutine is being used to find the index of "dino" in
the array @names. First, the my declaration names the parameters: there’s
$what, which is what we’re searching
for, and @array, an array of values
to search within. That’s a copy of the array @names, in this case. The foreach loop steps through the indices of
@array (the first index is 0, and the last one is $#array, as you saw in Chapter 3).
Each time through the foreach
loop, we check to see whether the string in $what is equal[*] to the element from @array at the current index. If it’s equal, we
return that index at once. This is the most common use of the keyword
return in Perl—to return a value
immediately, without executing the rest of the subroutine.
But what if we never found that element? In that case, the author
of this subroutine has chosen to return −1 as a “value not found” code. It would be
more Perlish, perhaps, to return undef in that case, but this programmer used
−1. Saying return −1 on that last line would be correct,
but the word return isn’t really
needed.
Some programmers like to use return ...