whileとuntilは真逆の性質ですが、whileばかりを多用してしまうのでuntilと比較してみました。
my $i = 20; while ($i > 10) { # 条件に満たないとき(この場合iが11を下回ったとき)にループを抜ける printf "++ (%d)\n", $i; $i--; # ブロックの最後でデクリメント } printf "-- (%d)\n", $i;
++ (20) ++ (19) ++ (18) ++ (17) ++ (16) ++ (15) ++ (14) ++ (13) ++ (12) ++ (11) -- (10)
my $i = 0; until ($i > 10) { # 条件を満たしたとき(この場合iが10を上回ったとき)にループを抜ける printf "++ (%d)\n", $i; $i++; # ブロックの最後でインクリメント } printf "-- (%d)\n", $i;
++ (0) ++ (1) ++ (2) ++ (3) ++ (4) ++ (5) ++ (6) ++ (7) ++ (8) ++ (9) ++ (10) -- (11)