Perlのdo〜while文(中編)
前回の続き。
次は、lastを使ってループを抜けようと思う。
use strict;
use warnings;
use v5.10;
my $i = 0;
{
do {
say "\$i = $i";
$i++;
last;
} while ($i < 10);
}
say "\$i = $i";
これを実行すると、こんな感じ。
$ perl bbb.pl
$i = 0
$i = 1
lastは、ラベルを省略すると一番内側のループを抜ける(*1)ので、
この挙動を見る限り、一番内側のループとは外側の{...}を指している。
じゃぁ、内側の{...}って何?ってなるんだけど、
doの使い方を見ると、do BLOCKって書いてあって、
たぶん、内側の{...}がBLOCKに相当してるっぽい。
ポイントとしては、
do – perldoc.jpに書いてある通りdoのBLOCKはループとして扱われない点で、
perlsyn – Perl の文法 – perldoc.jpに書いてあるラベルを導入するのが良さそう。
続く。
(*1) last – perldoc.jp参照
Leave a Comment