Perlのdo〜while文(前編)
いわゆるC言語のそれとは違うらしいので、
手を動かして理解してみようと思う。
perlsyn – Perl の文法 – perldoc.jp
まず、このページの文修飾子を読む。
次に、ダメなコード。
use strict; use warnings; use v5.10; my $i = 0; do { say "\$i = $i"; $i++; last; } while ($i < 10); say "\$i = $i";
これを実行すると、
$ perl bad.pl
$i = 0
Can't "last" outside a loop block at bad.pl line 10.
で、言われるがままに修正。
use strict; use warnings; use v5.10; my $i = 0; do {{ say "\$i = $i"; $i++; last; }} while ($i < 10); say "\$i = $i";
今度はどうでしょう?
$ perl aaa.pl
$i = 0
$i = 1
$i = 2
$i = 3
$i = 4
$i = 5
$i = 6
$i = 7
$i = 8
$i = 9
$i = 10
とりあえず、エラーはでなくなったけど、できればlast
でループを抜けたいところ。
で、何が起きてるかというと、
last
によって内側の{...}
を抜けて、
外側の{...}
の先頭から実行されてるっぽい。
つまり、このコードは書いた通りに動いている。
続く。
Leave a Comment