下記は Perl における while ループの簡単な使用例です。
while ループは、指定した条件を満たしている限り、ブロック内の処理を繰り返し実行します。
my $val = 0;
while ($val < 100) {
$val += 5;
print "$val\n";
}
コードのブロックは、必ず { と } で囲む必要があります。
while の代わりに until を使うと、条件式の判定を逆にできます。
until ($buf_size >= $data_size) {
# $buf_size が $data_size 以上になるまで実行される
$buf_size *= 2;
}
式修飾子 (expression modifier) を使って次のようにひとつの文で書くこともできます。
print ($val += 5), "\n" while $val < 100;
$buf_size *= 2 until $buf_size >= $data_size;
while (until) ループを途中で抜ける場合は、last 演算子を使います(C 言語の break のようなものです)。
while ($val < 10) {
print "$val\n";
last if $val > 5; # 5 を超えたらループ終了
++$val;
}
while (until) ループで現在の繰り返しを終了させ、次の繰り返しを行う(条件文のチェックへ戻る)には next 演算子を使います(C 言語の continue のようなものです)。
while ($val < 10) {
++$val;
next if $val % 2 == 0; # 偶数なら次の繰り返しへ
print "$val\n";
}
現在の繰り返しをもう一度実行する(ブロックの先頭に戻る)には redo 演算子を使います(C 言語には同様の機能はありません)。
このとき、条件文のチェックは行われません。
while ($val < 10) {
print "$val\n";
print "Redo? (Y/N): ";
chomp ($line = <STDIN>);
redo if $line =~ /^Y$/i;
++$val;
}