導入
配列の全要素を処理するには foreach が定番です。要素数を知りたい場面もよくあります。
説明
foreach my $x (@配列) で全要素を順に処理できます。配列をスカラの文脈で使うと要素数になります(my $n = @配列; や scalar @配列)。最後の添字は $#配列 です。
use strict;
use warnings;
my @scores = (80, 95, 70, 100);
my $total = 0;
foreach my $s (@scores) {
$total += $s;
}
print "合計 $total\n"; # 345
my $count = @scores; # スカラ文脈 → 要素数
print "個数 $count\n"; # 4
print "最後の添字 $#scores\n"; # 3
print "平均 ", $total / $count, "\n";
for に添字を回す書き方もできます。
use strict;
use warnings;
my @fruits = ("apple", "banana", "cherry");
for my $i (0 .. $#fruits) {
print "$i: $fruits[$i]\n";
}
やってみよう
@scores の中身を変えて、合計・個数・平均が変わることを確かめましょう。
演習
配列 @data に (4, 8, 15, 16, 23, 42) を入れ、foreach で合計を求めて表示してください(結果は 108)。
ヒント1を見る
my $sum = 0; foreach my $x (@data) { $sum += $x; } のあと print "$sum\n";。