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に書いてある通りdoBLOCKはループとして扱われない点で、
perlsyn – Perl の文法perldoc.jpに書いてあるラベルを導入するのが良さそう。

続く。

(*1) last – perldoc.jp参照

Leave a Comment