§3 Perlで作るCGIの基本

ブラウザに“こんにちは”と表示する簡単なCGIを作成しよう。

#!/usr/local/bin/perl  #…(1)

# ヘッダの出力  #…(2)
print "Content-type: text/html\n\n";  #…(3)

#HTMLの出力  
print "<html>\n";   
print "<head>\n";
print "</head>\n";
print "<body>\n";
print "こんにちは\n";
print "</body>\n";
print "</html>\n";

#…(4)

■先頭1行目はperlのパスを指定 ・・・(1)
#!/usr/local/bin/perl
perlのプログラムがある場所を指定する。サーバーによって違うが、UNIXは#!/usr/local/bin/perl”または“#!/usr/bin/perl”、 Windowsでは”#!c:\perl\bin\perl.exe”の場合が多い。レンタルサーバーで あれば説明書を見たり、管理者に問い合わせて確認しておくこと。
また、telnetが利用できれば“whereis perl”の命令で確認できる。

■コメント ・・・(2)
perlスクリプトの中に注釈であるコメントは、#からその行の終わり までである。どんな処理をしているのか、なぜそのような方法で プログラムしたのか、後でperlスクリプトを見てもわかるような コメントを書くこと。

■文末はセミコロン ・・・(3)
命令 引き数;
perlの文は命令と引き数の組み合わせであり、文末にセミコロン(;)を記述する。
セミコロンのあとに続けて次の命令を記述してもよいが、可読性を良くするため 通常は改行する。

命令・・・特定の機能を実行するコンピューターのプログラムの小さな固まり。
     コマンド、関数、サブルーチンなども同意語。
引き数・・命令の動作を変えたりするオブション。

■HTMLを出力する前にHTTPヘッダを出力 ・・・(3)
print "Content-type: text/html\n\n";
CGIで出力しなければいけない唯一のHTTPヘッダで、これから出力する文書の種類を表している。

■printは出力 ・・・(3)
print (出力先) (出力する文字列)
printは文字列を出力する命令で、引き数でどこに出力するか、出力する文字列 を指定する。 出力先を指定しなければ“標準出力”と呼ばれる所に出力され、CGIではWebサーバーが標準出力先になっている。

■文字列  ・・・(3)
"文字列" '文字列'
通常、文字列はダブルクォート(")またはシングルクォート(')で囲む。

▼シングルクォート
書いたままの文字列になる。
print 'hello!\n'; ・・・hello!\n と表示する。

▼ダブルクォート
後ほど説明する変数や改行などをあらわすエスケープシーケンス文字が置き換えられる。
print "hello!!\n"; ・・・hello! と表示し改行する。

■エスケープシーケンス ・・・(3)
\n
改行やタブなど文字として表すことができない符号をエスケープシーケンスと呼ぶ。 改行(\n)、タブ(\t)などがある。

■終わりを表す命令はない  ・・・(4)
perlには終わりを表す命令はないが、どうしても必要であればexitの 命令を使う。

■CGIを実行する
作成したperlスクリプトをパソコンのWebサーバーで実行させてみよう。

(1)作成したperlスクリプトをEUCの文字コードで保存する。ファイル名は“hello.cgi”とする。
(2)“hello.cgi”をドキュメントルートのフォルダーにコピーする。
(3)スタート→プログラムの中から“Apache Start”を選択してApacheを起動する。
(4)ブラウザのアドレス欄に“localhost/hello.cgi”と入力する。
(5)perlスクリプトにエラーがなければ「こんにちは」と表示される。

▼エラーが表示されたら
作成したperlスクリプトにスペルミスなどの間違いがないか、他人になったつもりで、ソースコードを見直そう。


パンダ君の失敗

こんな簡単なCGIなんて楽勝さ、とお気軽に作って実行したら、が〜ん、動かない。 でも、こういうときにあせってはいけない。先生に教わったように、もう一度じっくりとソースコードを見直す。 なっなんと、文末のセミコロンがコロンになっていた。 これじゃ動かないや。でも、コンピューターって融通がきかないなぁ。


戻る
メニューへ
次へ