ブラウザに文字列を表示する - CGI(Perl)の基本と掲示板作成
目次
- CGI(Perl)の基本と掲示板作成
- ブラウザに文字列を表示する
- アクセスカウンタを作る
- フォーム内容を表示する
- 占いプログラムを作る
- 掲示板 その1
- 掲示板 その2
- 掲示板 その3
- 掲示板 その4
はじめてのPerl
準備ができたところで、簡単なプログラムを作りながらPerlの文法を覚えて行きます。プログラム
以下のプログラムをテキストエディタで入力してください。
#!/usr/bin/perl
# レスポンスヘッダの出力
print "Content-type: text/html; charset=Shift_JIS\n\n";
# HTML本体の出力
print "<html>\n";
print "<body>\n";
print "<p>CGIの世界へようこそ!</p>\n";
print "</body>\n";
print "</html>\n";
ファイルのアップロード
入力が終了したら、hello.cgiという名前でcgiフォルダの中に保存します。次にそのファイルをWebサーバにアップロードするのですが、以下のその方法を示します。まずFFFTPを立ち上げ、左ウインドウをcgiフォルダに移動します。次に右ウインドウもcgiフォルダに移動します。
そして左ウインドウのhello.cgiを右ウインドウにドラッグするか、上向きの青い矢印のアイコン(アップロード)をクリックします。
パーミッションの設定
次に、パーミッションの設定を行ないます。UNIX系のサーバでは、ファイルにパーミッションという属性が付いていて、
- ファイルを読む
- ファイルに書き込む
- ファイルに書かれたプログラムを実行する
hello.cgiはプログラムなので、実行許可を与えなければ実行することができません。
FFFTPからサーバにアップロードされたhello.cgiを右クリックして「属性変更」を選び、「現在の属性」を「755」にして実行を押します。
CGIプログラムは(例外もありますが)755を指定するものだと覚えておけば良いでしょう。
ブラウザからCGIプログラムを実行する
ブラウザで実行結果を確認してみます。URLに「サーバアドレス/~ログインID/cgi/hello.cgi」と入力してEnterキーを押してください。「CGIの世界へようこそ!」と画面に出たなら成功です。「Internal Server Error」と表示されたら、プログラムか又はパーミッションにミスがあります。よく確認してください。もしくは、Webサーバによっては一行目が #!/usr/bin/perl ではなく、 #!/usr/local/bin/perl かも知れません。両方試してみてください。
プログラムの説明
#!/usr/bin/perl
一行目には必ずこの文が来ます。これは、サーバにPerl実行プログラムの場所を教えています。深く考えずにこう書くものだと覚えておけば良いでしょう。ただし上に書いた通り、サーバによって違う場所になる場合もあるので注意してください。
# レスポンスヘッダの出力
この行はコメントです。プログラムの実行には何の影響も及ぼしません。#を付けると、そこから行末までがコメントと見なされます。
print "Content-type: text/html; charset=Shift_JIS\n\n";
これはサーバに対してどういう種類のHTMLをどんな漢字コードで出力させるか、という指令(レスポンスヘッダ)を出力しています。どんなCGIプログラムでもこの処理は必要で、変わることもほとんどないので、これも一行目と同じく、こう書くものだと覚えておけば良いでしょう。
print "<html>\n";
print "<body>\n";
print "<p>CGIの世界へようこそ!</p>\n";
print "</body>\n";
print "</html>\n";
この部分が実際のHTMLを生成して出力している部分です。printはPerlの命令のひとつで、後ろに書かれた値(引数と言います)を出力する、という機能があります。もう少し細かく見て行きましょう。
"<html>\n";
Perlでは文字列を表わすときは基本的に「”(ダブルクォーテーション)」で囲まなければなりません(他の囲み方もあるのですが省略)。ここでは「<html>\n」という文字列を出力しています。<html>はタグなので分かると思いますが、\nとは何でしょう?これは改行(Enter)のことです。改行は普通の文字としては表わせないので、特別な\nという表現方法(エスケープシーケンスと言います)を取っているのです。そして最後の「;」は文の終わりを表わします。Perlでは単にHTMLを出力するときもこんな感じで print命令+”+タグ+\n+”+; と書かなければなりません。これでは大変なので、解決策を後ほど示します。最後にブラウザからソースを表示してみて、ちゃんとプログラム通りのソースが表示されているか確認してみてください。