初めてのPerl 第4章

この本の説明だと少しやっかいもの扱いされてる感じだったけど、local演算子でダイナミックスコープが実現できる部分は JavaScript に似てて面白いなと思った。

ex04-1.pl
#!/usr/bin/perl -w
use strict;

sub total {
    my $sum_of_all = 0;
    foreach (@_) {
        $sum_of_all += $_;
    }
    $sum_of_all;
}

my @fred = qw{1 3 5 7 9};
my $fred_total = &total(@fred);
print "The total of \@fred is $fred_total.\n";
print "Enter some numbers on separate lines:\n";
my $user_total = &total(<STDIN>);
print "The total of those numbers is $user_total.\n";

反省点

$sum_of_all; をサブルーチンの最後に書かなかったら、戻り値が恐らく undef になっていたらしく、何も表示されなかった。最後に評価された式が「foreach (@_)」だったからかな?