for文 - 要素番号を使用した繰り返し
要素番号を使って繰り返し処理を行うにはforを使用します。繰り返しの構文としては他にwhile文とforeach文がありますがforは配列の要素番号が必要な場合に使用されます。
# for
for (カウンタ変数の初期化; 条件; カウンタ変数の更新) {
...
}
for文を使った繰り返しについては以下で詳しく解説しています。
サンプル
配列の要素を順番に出力するサンプルです。
# 配列の要素を順番に処理
my @nums = (3, 4, 5);
for (my $i = 0; $i < @nums; $i++) {
print "$i: " . $nums[$i] . "\n";
}
データ構造が配列のリファレンスの場合に配列の要素を順番に出力するサンプルです。
# 配列の要素を順番に処理(配列のリファレンス)
my $nums = [3, 4, 5];
for (my $i = 0; $i < @$nums; $i++) {
print "$i: " . $nums->[$i] . "\n";
}
2次元配列のすべての要素を順番に出力するサンプルです。Perlでは2次元配列はリファレンスを使用して作成する必要があります。
# 2次元配列の要素をすべて出力
my $data = [
['a', 1],
['b', 2]
];
for (my $i = 0; $i < @$data; $i++) {
for (my $k = 0; $k < @{$data->[$i]}; $k++) {
print "($i, $k) : " . $data->[$i]->[$k] . "\n";
}
}
2次元配列に含まれる値を行ごとにタブ区切りで出力するサンプルです。
# 2次元配列を行ごとにタブ区切りで出力
my $data = [
['a', 1],
['b', 2]
];
for (my $i = 0; $i < @$data; $i++) {
print join("\t", @{$data->[$i]}) . "\n";
}
for文のいくつかのサンプルです。
<pre>
use strict;
use warnings;
print "[1]\n";
for (my $i = 0; $i < 5; $i++) {
# 1づつ加算して、$valが、5になったとき、ループを抜ける。
print "$i\n";
}
print "\n";
print "[2]\n";
my @chars = qw/a b c d e/;
for(my $i = 0; $i < @chars; $i++){
# @chars(配列のサイズ)は、5なので,$indexが、5になったとき、ループを抜ける。
print "$chars[$i]\n";
}
print "\n";
実行結果
[1] 0 1 2 3 4 [2] a b c d e
Perlゼミ

