Perlのdo〜while文(後編)

前回の続き。

ここまでの話をまとめるとdo〜while文は、
for (条件) { 処理; }とか、while (条件) { 処理; }とは異なり、
式 if 条件;とか、式 while 条件;の仲間っぽい。

つまり、こういうこと。

use strict;
use warnings;
use v5.10;

my $i = 0;
$i++ while $i < 10;

say "\$i = $i";

say '---';

$i = 10;
$i++ while $i < 10;

say "\$i = $i";

say '---';

$i = 10;
do $i++ while $i < 10;

say "\$i = $i";

say '---';

$i = 10;
do { $i++; } while $i < 10;

say "\$i = $i";

これを実行すると、こんな感じ。
$ perl ccc.pl
$i = 10
---
$i = 10
---
$i = 10
---
$i = 11

という訳で、perlsyn – Perl の文法perldoc.jpに書いてある通り、
do { BLOCK }に限っては、条件式が評価される前に一度BLOCKが実行されるので、
C言語のdo〜while文のように使えるけど、doBLOCKはループとして扱われないので、
ループ制御文(next, last, … etc)を使う場合は注意しましょうというお話でした。

おしまい。

Leave a Comment