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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access