初期設定
CGI.pm及びjcode.plの使用宣言
ログ保存ファイル名、保存ファイル数、表示ファイル数を設定します。
サーバから、現在時刻を読み出して、ログに記録します。
$yearは年ですが、+1900で、年を西暦にあわせます。
sprintfは、十進数の数値を文字列に変換するコマンドです。
年・月・日・時・分を組み合わせて、時刻表示を整えます。
出力開始
ここから暫らくは前回と同じです
CGIのヘッダー出力
HTMLのヘッダー出力
|
|
入力欄
36行目から、print <<"end"分以下、
タブを使わずに、ベタ打ちにする事。
表題を「簡易表示板Ver1」に変更しました。
CGIファイル名を「7」に変更、その他変更なし。
data処理
お名前部分をチェックして、ミス送信をチェックしています。
お名前が無いログを記録しない為の処置で、読み出しのみ実施します。
出力終了
こちらが、正常終了時のフッターです。
ここからサブルーチン
sub data書込
ログの保存サブルーチンです。
data取り出し
サーバから、各変数に読み出します。 |
|
日本語code変換
日本語ドメインとかもありますから、総てに、日本語コード変換を設定しています。
入力チェック
入力チェックを加えました、URL以外に入力不備をチェックし、エラーにしました。
ファイルオープン
この書式は、初めて知りました。
!は否定のはず、開けなければエラー表示ですか、これは便利。
<IN>はファイルハンドルを利用して、全文コピーできます。
Record数の取り出しも変わってますね。
此処の変換は、コメント内に改行が入ったままだと、Recordが求まらない為の処理。
"<>"を区切り文字に使用、
KETWEBさんの真似です、しかしこれは便利だ。
unshiftは、先頭に挿入です、これなら逆順処理が不用になる。
ログの書き込み処理、この場合全文上書き保存ですが、追記用に開く事も可能。
|
|
sub data表示
ここでも開いて読み込んで直ぐに閉じてます。
処理の競合を避ける為にファイルを開いたままにはしません、
いずれ、ファイルロックが必要になるでしょう。
ファイル数など常時変化する物として、対応を考える必要が有りますね。
ここでは、現在時刻を同時に記録するようにしています。
書き込み要求があってから時刻を読み出しますから、大丈夫でしょう。
最大表示数で、表示を打ち切る処理。
{ last }が、打ち切り命令です。
ログの表示部分、必要回数繰り返し表示になりますね。
[ } ]の数に注意しましょう。
foreachと、subで、2つ並びます。
|
|
エラー処理
$_[0]で引数を受け取り、表示して強制終了。
HTMLフッターを出力して、exitで強制終了させてます。
|
|