制御構文(3) for

for といえばお馴染みのループ構文ですね。初期化式、条件式、再初期化式という3つの式を指定して、与えたブロックを繰り返す事ができます。

# fortest.pl
my @fruits = ("apples", "oranges", "bananas");
 
for (my $i = 0; $i < @fruits; $i++) {
	print "I like $fruits[$i]!\n";
}

最初に配列変数 @fruits に3つのフルーツの名前を持たせています。
「my $i = 0」の部分が初期化式です。スカラ変数 $i を 0 で初期化していますね。0 からスタートという意味ですね。
「$i < @fruits」の部分が条件式。スカラ変数 $i と配列変数 @fruits を比較しています。こういった場合、@fruits はスカラコンテキストで評価されて、配列の要素数を表すのでした。つまりこの式は「$i が @fruits の要素数未満かどうか」を表しています。この条件式が真である限り、ブロックが繰り返し実行されます。
「$i++」の部分が再初期化式です。$i++ というのは「$iに1を足す」という意味になります。再初期化式はブロックが終端まで実行された時に評価されます。(あれ……どこかで聞き覚えがあるフレーズです
実行結果です。

I like apples!
I like oranges!
I like bananas!

つまり、この for 文は

  1. まず $i に 0 を代入して
  2. $i が @fruits の要素数未満なら
  3. $fruits[$i] で $i 番の要素の文字列を表示して
  4. $i に 1 を足して
  5. 2. に戻る

という事になります。