CGI活用講座第6回、CGI作成編(1)です。
CGI活用講座、第6回は、作成編です。
今回から、作成編に入ります。
ダウンロード&テストは、教材DownLoad です」
CGI活用講座→第6回に進んでください。
ダウンロードした教材は、アップロード用です、基礎講座を参考に、Perlのパスをサーバにあわせてください。
では、CGI活用講座第6回の開始です。
右の図は、ローカル環境でテストした時の物、
4回、断続的に、入力テスト実施後の結果です。
御覧のように、掲示板風になってます。
余り、Perlのコードが大きくならない内に、第6回目とします。
CGIファイルです、こちらは、ローカル環境の物です。
ファイル名「katuyou6.cgi」
ダウンロード後に、Perlのパスを書きかえれば同じになります。
では、解説を始めます。
今回から、コメントで区切りを入れましたから、コメント範囲毎に解説します。
1行目はPerlのパス設定、ローカル用はこうなります。
初期設定
ライブラリは、「CGI.pm」と「jcode.pl」を使用します。
今回は、データ記録用に「datafile.log」を使用します。
ファイル名は、ここで設定すれば、何でもOKなんです。
出力開始
CGI.pmによる、ヘッダー部分とタイトル表示、いつも同じです。
入力欄出力
20行目、print <<"end"、"end"の文字が出るまで連続出力。
これは、便利、普通に、HTMLを書いておけば良いから、過去の財産をコピペでも上手く行きます。
27行目で、<textarea>を使ってますが、rows,colsを指定する以外使い方は似たような物です。
後日、CSSを設定しますから、今は、飾りは一切つけません。
data有無
名前の入力があるか確認して、有れば、記録処理をします。
&付きの名前は、サブルーチン呼び出しです。
36行目、&kakikomi、dataファイルに書き込み処理をします。
38行目、&gprint、dataファイルから読みだして画面表示します。
出力終了
HTMLのフッターを出力します
43行目、exit;、サブルーチンに処理が流れ込まないように、ここで、終了にしてますが、無くてもいいのかも知れません。
data書き込み
サブルーチンの説明が抜けてますね、失礼しました。
サブルーチンは必要な時に呼び出して実行する物、これを拡張するとライブラリにも出来ます。
47行目は、36行目からの呼び出しで実行する物、転送データがあったら、記録ファイルに書き込む処理です。
後日の編集が楽なようにサブルーチン化してあります、
データ取り出し
CGI.pmによる、転送データ取り出しは、この様にします。
日本語コード変換
小生の環境では不要ですが、一般化の為に入れてあります。
ファイルオープン
61行目、open(IN,"<$data");、dataファイルを入力用に開いています。
「IN」をファイルハンドルと呼ぶようです、大文字基準なようですが、何でも良いようですね、使い方は見たとおり、開いて、読み出して、閉じて置く、これですね。
小生は色々な言語でプログラミングしますが、データベース以外はこの方式で使います。
70行目、コメント中の改行は記録・読出の邪魔なので、半角スペースに変換しておきます。
74行目、読み出し時の都合を考えて、切り分け文字を挟んで、一行に纏めます。
83行目から、dataファイルを開き、書き込んで閉じてます。
逆順処理は、他にも方法が有りますが、其れは次回に廻します。
ログの表示
93行目、open(IN,"$data")、61行目に同じ、
98行目、@tempから一行ずつ読み出して、$tempに代入し各変数に振り分けます、localはサブルーチン内において値を保持します。
@tempが空になるまで、続いてしまいますね。
次回は、
エラー処理を含めて、最大保持数、最大表示数、投稿時間の記録、等など、掲示板に近づいていきます。
CGI活用講座、第6回を終了します。
|