5.制御構造
設定した条件に応じて処理を分岐したり、繰り返したりするものです。
@ if elsif else 文
書式 if (条件) { (処理)ブロック; }
elsif (条件) { (処理)ブロック; }
else { (処理)ブロック; }
(例)
if ( $data eq 'ウインドウズ' ) {
print "Windowsです";
}
elsif ( $data eq 'リナックス' ) {
print "Linuxです";
}
else {
printf "FreeBSDかもしれないよ";
}
※私はこれが少し苦手です。if 〜 elsif まではいいのですが、それ以上になると論理が自分でおかしくなってしまう。(´・ω・`)
A while 文
書式 while (条件) {
ブロック;
}
条件が「真」(満たされている間)の間は、ブロックを実行します。
(例)
open (FH, "data_file.dat") ; # data_file.datを開く
while (<FH>) { # ファイルの最後まで表示する
print ;
}
close(FH); # data_file.datを閉じる
B until 文
書式 until (条件) {
ブロック;
}
whlie と逆の判断をします。条件が「偽」(条件と違う)間、ブロックを実行します。
C for 文
書式 for (式1 ; 式2 ; 式3 ) {
ブロック
}
式1が、式2になるまで式3のステップでブロックを実行します。・・・・・わかりづらいので例を記します。
(例)
for ($i = 0 ; $i < 10 ; $i++ ) {
print "i = $i \n" ;
}
$i が 0から9の間(10回) $i の値を表示します。$i は +1 ずつカウントアップします。
※これは、式2の設定を間違えると無限ループに陥ったりしますね。
D foreach 文
書式 foreach 変数 ( list ) {
処理ブロック;
}
list の1番から順に変数に代入し、ブロックを実行します。list が終了するとループから抜けます。
※for と foreach は実際には同義語です。foreach と書きたい場面で for と書く事も、 for と書きたい場面で foreach と書くことも出来ます。
(例)
@aray = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ) ;
foreach $a (@aray ) {
print "$a \n" ;
}
E do 文
書式 (1) do {
処理ブロック ;
}
while ( 条件 )(2) do {
処理ブロック ;
}
until ( 条件 )
それぞれ、while 文と until 文 の判定が繰り返しの最後に実行されるものです。
F ループ制御
last 文 繰り返し(ループ)の実行をただちに打ち切って、繰り返し(ループ)から抜け出す。 next 文 残りの処理をスキップして、次の判断文に制御を移す。
【戻る】