ビギナーズ CGI

 初歩から始める初心者向けPerl-CGI講座  

| トップページ | CGI設置 | CGI作成 | 作成事例 | 設置用語 | 作成用語 | 関数リファレンス | FAQ | お問合せ |
  
CGIの設置方法
フリーで配布されているCGIを設置する際の手順や注意事項などの説明です。

CGI作成の初歩
初めてCGIを作る方向けの手順を簡単な例で説明しています。

CGI作成ヒント集
こういう事をする時は、どのように行えばいいのか?など具体的な事例を紹介します。

CGIの設置に関する用語
CGIの作成に関する用語
CGIの設置や作成時に使われている用語や関連知識を掲載しています。

設置に関するFAQ
作成に関するFAQ
設置や作成をする際に起こりがちなトラブルの説明と、よくある質問とその回答を掲載しています。


 
 

CGI 作成の初歩
 HTMLページを表示してみる  文字列の置き換え
 複数行のHTMLページを表示  フォームから入力された値を表示
 ソース内にコメントを書く  ファイルに書き出す
 変数を使った簡単な計算  ファイルから読み込む
 条件式を使って分岐する  フォーム入力からファイルに書き出す
 文字列の扱い方を練習  サブルーチンを使用してみる
 ループを練習 (繰り返し処理)  現在の時刻を取得する
 配列の簡単な使い方  ファイルの簡単な操作をする
 配列の操作を行ってみる  不特定が書き込むファイルの排他処理
 文字列の検索と取出し  CGI から画像を表示する



7. ループ処理を練習する (繰り返し処理)

条件の間、繰り返し何らかの処理をしたいときループを使い、
下のような種類があります。


for 回数を決めて、その間処理を繰り返す
while 設定条件が正しい間処理を繰り返す
foreach 配列に対して繰り返し処理を行う



ここでは while を使って繰り返し処理を行ってみます。
下の例では変数 $a初期値 0 を与え、 $a が 10より小さい間処理を繰り返します。
そして最後に 終了しました。 の文字列を表示しています。
実行結果
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
終了しました。



上記の例で終了の条件を 変数 $a が 10より小さい間処理を繰り返すようになっており、
print "繰り返し処理<BR>"; の後で変数 $a を 1づつ加算しています。
この加算が無かったらどうなるでしょうか?
変数 $a は永遠に 0 のままで、終了条件の 10 を超える事が無い為、無限ループとなります。
無限ループを作ってしまうと、終了させない限りサーバはこの処理を永遠に続ける事となってしまい、
異常な負荷をサーバに掛けてしまう事になりますので非常に注意しなければなりません。
繰り返し処理を行う際は、必ず終了できる条件を設定しなくてはなりません。

【関連項目】
配列に繰り返し処理を行う foreach については 配列の操作を行ってみる で説明します。


繰り返し処理を途中何かをする

繰り返し処理を行っている途中で、終了条件に設定した条件以外の方法で抜けたり、
何らかの処理を行ってみます。


下の例では last (繰り返し処理を抜ける) を使って $a が 5 になった時点で終了させています。


実行結果
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
終了しました。

繰り返し処理自体に設定された終了条件は $a が 10 になるまでですので、10回文字列を
表示するはずですが、途中で last を使い$a が 5 になったら終了と指示してますので、
文字列を 5回表示した時点で繰り返し処理は終了しています。


繰り返し処理は途中で終了していますが、プログラム自体は終了しないので、
5回表示した後、その後の処理 終了しました。 を表示しています。

プログラムを終了させる ( exit )

上記の last は繰り返し処理を抜けるのみで、その後に何らかの処理が書かれていれば
引き続き、繰り返し処理の後の処理を続けますが、次は プログラム自体を終了させる exit です。


下の例では last の代わりに exit を使ってみました。
この場合はどうでしょうか?


実行結果
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理
繰り返し処理

この場合、繰り返し処理の終了ではなく、プログラム自体を終了していますので、
exit の条件 $a == 5 の時点でプログラムは終了し、その後の処理は行われません


この exit は何らかの理由でそれ以降の処理が必要なくなった場合 (エラー処理など) などに使います。

次の繰り返し処理を行う ( next )

繰り返し処理は  と  で囲われた部分を繰り返しますが、 next を使うと、
それ以降の処理を行わず、次の繰り返し処理に入ります。




実行結果
繰り返し処理 OK
繰り返し処理 OK
繰り返し処理 OK
繰り返し処理 OK
繰り返し処理 OK
繰り返し処理
繰り返し処理 OK
繰り返し処理 OK
繰り返し処理 OK
繰り返し処理 OK
終了しました。



ここにも無限ループの罠が隠れています。
例えば、 $a == 5 の時点で次の処理を行う next を実行していますが、この前に終了条件を決める$a に 1 加算する処理を
行わないと 変数 $a は 5 のまま次のループに入り、また next を実行となるので、永遠に終わらない無限ループとなってしまいます。
終了条件は設定したはずなのに、何らかの処理や状態で知らないうちに無限ループの罠に掛かってしまいますので注意が必要です。


無限ループは複雑な処理を行うほど、見つけるのも難しいので十分注意が必要です。
他の方も使うようなスクリプトでは、どのような操作をされても正しく終了できるように
特に注意が必要です。



Beginner's CGI  - Copyright (C) 2003 aimix. All Rights Reserved -