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