HomePage講座     Yukiの休息所
 Yukiの休息所(趣味の部屋)
 ホームページ講座
 CGI活用講座
次の項目へ>>
<<前の項目へ

CGIとPerlの知識を蓄えよう

 CGI活用講座、第6回は、作成編です。

 CGIはHTMLの知識が無いと、扱えない物と思ってください、 HTMLをPerlで記述すると思っていただいて良いと思います。
 使用ソフトは、TeraPadとFFFTPのみ、

 その他、必要な物は、CGI&Perlが使えるサーバーですね。

 出来れば、自宅にサーバ環境を構築して、Perlをインストールし、 ローカルでテスト出来る環境が望ましい。
 
 
では、CGI活用講座第6回の開始です。

    
 CGI,活用講座、第6回 
 今回から、作成編に入ります。
 ダウンロード&テストは、 「http://pc-sup.com/sub/index.html」、 旅の思いで写真集「当講座の教材Pageです」
 CGI活用講座→第6回に進んでください。
 ダウンロードした教材は、アップロード用です、 基礎講座を参考に、Perlのパスをサーバにあわせてください。
 
 右の図は、ローカル環境でテストした時の物、

 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ファイルを開き、書き込んで閉じてます。

 逆順処理は、他にも方法が有りますが、其れは次回に廻します。

 data表示

 93行目、open(IN,"$data")、61行目に同じ、

 98行目、@tempから一行ずつ読み出して、$tempに代入し各変数に振り分けます、 localはサブルーチン内において値を保持します。

 @tempが空になるまで、続いてしまいますね。
   次回は、
 エラー処理を含めて、最大保持数、最大表示数、投稿時間の記録、等など、 掲示板に近づいていきます。
 
 
 CGI活用講座、第6回を終了します。