○do について
C言語を知っている人は、while、for と来たら、次に do が登場することを期待するでしょう。Perl にも 「do」は存在します。しかし、Perl の do でループを作ろうとする行為は間違いです。もちろん、 理解した上で、それが正しい処理であるのなら作っても構いませんが、元々、do はループを作る目的では 提供されていないのです。
Perl の do は、doブロックと呼ばれるブロックを作ります。これは一言で 言えば、一連の処理を1つのブロックにまとめ上げるものです。ちなみにブロックという構造を表現する 記号が { } です。
doブロックは、例えば次のように使います。
#!C:/Perl/bin/perl
use strict;
use warnings;
# 入力された値に応じて、初期値を決める
my $str = do{
my $in =
chomp $in;
if( $in % 2 == 0 ){
‘偶数’;
}else{
‘奇数’;
}
};
print “$str\n”;
doブロックの内部で、更に新しいスカラー変数を定義しています。このような初期化方法は、doブロックの 力を借りないと不可能です。
doブロック内で、最後に実行された文の結果が、最終的な値として使われます。「’偶数’;」とか 「’奇数’;」のような、意味が無さそうな文がありますが、このいずれかが最後に実行される文なので、実行 された方が $str に代入されます。
“