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 文 残りの処理をスキップして、次の判断文に制御を移す。

戻る

サイトトップへ