Put this line as the last line executed in your subroutine: return $sum;
That makes it explicit as to what you want the subroutine to do. Don’t depend upon some obscure behavior of Perl to save a few keystrokes. Your program will be better for it. > On May 14, 2025, at 4:15 PM, Daryl Lee <da...@daryllee.com> wrote: > > In “Learning Perl”, Pg. 116, is found this sentence: Whatever calculation is > last performed in a subroutine is automatically also the return value. > > I have a subroutine that (almost) ends with this loop: > > foreach my $line (@lines) { > $sum += evaluate($line); > } > > What I want to return is the final value of $sum as calculated on the last > pass of that loop, so I simply closed the subroutine block right there with > }, making it look like this: > > foreach my $line (@lines) { > $sum += evaluate($line); > } > } > > That was pointless, so I “worked around” the issue by adding $sum at the end: > > foreach my $line (@lines) { > $sum += evaluate($line); > } > $sum; > } > > I think I can remember this in the future, but I’d like to understand what’s > actually happening. And I suspect I’m offending some veterans by not making > Perl-ish use of #_. Sorry about that. > Jim Gibson j...@gibson.org -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/