| #!/usr/local/bin/perl |
サーバー上のPerlの置き場所をフルパスで指定します。ご利用のサーバー業者がPerlの置き場所を特に指定していない場合は、上記のとおりでよいと思われます。
| #ライブラリの呼び出し require 'cgi-lib.pl'; require 'jcode.pl'; |
先ほどダウンロードした2つのライブラリを呼び出しています。
cgi-lib.plのファイルは、入力フォームに書き込んだデータを配列に格納する場合等に利用します。
jcode.plは、SHIFT-JISやEUCといった各文字コードをひとつのコードに統一する必要がある場合に利用します。詳しくは後ほど説明します。
緑の文字で示した部分は単なるコメントで、つけなくても構いません。保守をしやすくするためにコメントをつけておきたい場合は、先頭に「#」と入力し、その後ろにコメントを付け加えます。
また各命令の末尾には「;」(セミコロン)を
つけなければならないということも押さえておきましょう。
| #入力フォームから送信されてきたデータを連想配列formに格納する。 &ReadParse(*form); |
先ほど呼び出したcgi-lib.plの関数です。連想配列formに入力フォームから送られてきた名前とメッセージを格納します。配列とは、数字や文字を格納しておく為の箱のようなものです。分かりにくいかもしれませんが、この時点ではこの関数はあまり気にしなくていいです。この形式をそのまま使用することがほとんどです。
| #配列に格納された名前とメッセージを別の変数に代入する。 $name = $form{'name'}; $message = $form{'message'}; |
先ほど格納した配列から、名前とメッセージを各別に変数に代入します。変数も、数字や文字を格納しておく為の箱のようなものですが、配列は同じグループに属するものをひとまとめに格納するための箱であるのに対して、変数はグループという概念がなく、それぞれの文字や数字を単独で格納します。
たとえば$form{'name'};は、formというグループの箱があって、中括弧でnameと指定すると、名前を取り出すことができます。
$form{'message'};
は、formというグループの箱があり、中括弧でmessageと指定すると、メッセージを取り出すことが出来ます。
それぞれ取り出した名前とメッセージを変数$nameと、$messageに代入しています。
| #メッセージ中の改行文字を改行タグに変換する。 $message =~ s/\r\n/<br>/g; |
ブラウザに文字や画像を表示する場合は、HTMLタグを使って書かなければなりません。入力フォームから送られてくるデータは、改行文字が「\r\n」のようなメタ文字と呼ばれるものになっているので、これを<br>タグに変換する必要があります。
$message =~ s/\r\n/<br>/g;
は、メッセージの中にあるすべての\r\nを<br>に置換するためのコードで、正規表現と呼ばれるものです。
| #名前とメッセージをひとつの変数にまとめる。 $data = "<hr>名前:$name<br>$message\n"; |
名前とメッセージをHTMLタグを使ってひとまとめにし、変数$dataに代入します。
| #文字コードをsjisに変換する。 &jcode'convert(*data, 'sjis'); |
ライブラリのひとつjcode.plの関数です。
掲示板は、ネスケやエクスプローラーなど各種様々なOSを通じて書き込まれますが、送られてくる文字コードはEUCやSHIFT-JISなどOSによって異なります。この状況を放置しておくと、ブラウザがどの文字コードで表示してよいのか判断できず、文字化けを起こしてしまうことがあります。そこで、この関数を使って送られてくる文字コードをどれかひとつに統一する必要があります。ここではSHIFT-JISコードに統一しています。
| #ブラウザに送られてくるデーターはHTMLファイルであるということを知らせる。 print "Content-type:text/html\n\n"; |
ブラウザに送られてくるデーターはHTMLファイルであるということを知らせるための命令文です。