[もくじへトップページへ前ページへ次ページへ]

に更新

                                     

 7.制御文

 プログラムの流れを、ある条件にマッチするか判断し分岐させる文が制御文で

 す。例を示して説明します。

  • ブロック

    { }で囲まれた部分をブロックといいます。

  • if elsif else

    if (条件){ブロック;}

     $namae = 'ryokan';
     if ($namae eq 'ryokan'){
      print "ryokan\n";
     }
     elsif($namae eq 'dhogen'){
      print "dhogen\n";
     }
     else{
      print "不一致\n";
     }
     print "<br>\n";

      ※ elsifのスペルに注意。elseifではありません。


      条件式の書き方

       数値比較  文字列比較

         ==    eq    等しいとき
         !=    ne    等しくないとき
         >     gt    大なりのとき
         <     lt    小なりのとき
         >=    ge    大なりイコールのとき
         <=    le    小なり  〃

  • while

    while (条件) {ブロック;}

      $x = 0;
      while ($x < 10) {
       $x = $x + 1;
       print "$x\n";
      }
      print "<br>\n";

      $x < 10 の間、ブロックを実行します。

  • until

    until (条件) {ブロック;}

      $x = 0;
      until ($x >= 10) {
       $x = $x + 1;
       print "$x\n";
      }
      print "<br>\n";

      whileと反対の判断をします。

  • for

    for (初期化式; 条件式; 増減式) {ブロック;}

      for ($i = 1; $i <= 10; $i++) {
       print "$i\n";
      }
      print "<br>\n";

      $i++ は $i = $i + 1 と同じです。$iを1にして$iが10になるまで、$i

      を
    カウントしながらブロックを実行します。

  • do

    do {ブロック;} while (条件)
    do {ブロック;}until(条件)

      $i = 0;
      do {
       $i++;
       print "$i\n";
      }
      while ($i < 10);
      print "<br>\n";

  • foreach

    foreach 変数(リスト値) {ブロック;}

      @y = ("1","2","3","4","5");
      foreach $x ( @y ) {
       print "$x\n";
      }
      print "<br>\n";

      リストを順に取り出し変数に代入しながら、ブロックを実行します。

      リストが終了したとき、ループを抜け出します。

      変数を省略したときには、特殊変数「 $_ 」が使用されます。

  • last

    last;

    現在のループから直ちに抜け出します。

  • next

    next;

    現在の残りの文をスキップして、判断文に制御を移します。

  • redo

    redo;

    現在の残りの文をスキップして、ループの先頭に戻ります。制御判断は行

    いません。

  以上の説明を、ひとつのプログラムにまとめます。



 文字列操作のプログラム

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";

print "<HTML>\n";
print "<TITLE>制御文</TITLE>\n";
print "<BODY>\n";
#
#
# if (条件){ブロック;}
#
$namae = 'ryokan';
if ($namae eq 'ryokan'){
print "ryokan\n";
}
elsif($namae eq 'dhogen'){
print "dhogen\n";
}
else{
print "不一致\n";
}
print "<br>\n";
#
# while (条件) {ブロック;}
#
$x = 0;
while ($x < 10) {
$x = $x + 1;
print "$x\n";
}
print "<br>\n";
#
# until (条件) {ブロック;}
#
$x = 0;
until ($x >= 10) {
$x = $x + 1;
print "$x\n";
}
print "<br>\n";
#
# for (初期化式; 条件式; 増減式) {ブロック;}
#
for ($i = 1; $i <= 10; $i++) {
print "$i\n";
}
print "<br>\n";
#
# do {ブロック;} while (条件)
# do {ブロック;} until(条件)
#
$i = 0;
do {
$i++;
print "$i\n";
}
while ($i < 10);
print "<br>\n";
#
# foreach 変数(リスト値) {ブロック;}
#
@y = ("1","2","3","4","5");
foreach $x ( @y ) {
print "$x\n";
}
print "<br>\n";
#
#
print "</BODY>\n";
print "</HTML>\n";



 このプログラムに適当な名前をつけて、テキストモードでアップロードします。

 パーミッションは755に設定してください。



  テスト実行

      seigyo.cgi

 をクリックしてください。



  うまく動きましたか?

  動かないときは、サポート掲示板へどうぞ。

[もくじへトップページへ前ページへ次ページへ]