本文へスキップ
BecomeCoder

Perlコース · 第4章 配列 · レッスン13

配列を回す・数える ― foreach と要素数

ブラウザで完結

導入

配列の全要素を処理するには 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";

実際に動かしてみよう

下のエディタにPerlを書いて「実行」を押すと、学習用シミュレータが print / say の出力を表示します(本物のperlではなく、教材の範囲を再現した軽量なエンジンです)。スカラ/配列/ハッシュ・制御構文・サブルーチン・正規表現(=~ / s///)なども動きます。本文の例を書き換えて動かしてみましょう(ファイル入出力・リファレンス・CPANモジュールなど一部の機能は対象外です)。

Perl — ブラウザ内で実行(学習用シミュレータ)

Perlの教材サブセットを動かす学習用シミュレータを読み込みます(本物のperlではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。