ポンクソフト

ブラウザに文字列を表示する - CGI(Perl)の基本と掲示板作成

前ページ CGI(Perl)の基本と掲示板作成 TOP 次ページ

目次

  1. CGI(Perl)の基本と掲示板作成
  2. ブラウザに文字列を表示する
  3. アクセスカウンタを作る
  4. フォーム内容を表示する
  5. 占いプログラムを作る
  6. 掲示板 その1
  7. 掲示板 その2
  8. 掲示板 その3
  9. 掲示板 その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系のサーバでは、ファイルにパーミッションという属性が付いていて、
という3つの動作についてそれぞれ許可・不許可を与えることができます。
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+”+; と書かなければなりません。これでは大変なので、解決策を後ほど示します。
最後にブラウザからソースを表示してみて、ちゃんとプログラム通りのソースが表示されているか確認してみてください。
前ページ CGI(Perl)の基本と掲示板作成 TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0