Perl/Perlの基礎知識

初めての Perl CGIプログラミング(2ページ目)

Webサイトのフォームや、動きのあるページを作るために、Perlを使った簡単なCGIプログラミングを覚えましょう。最後には「美人時計」ならぬ「美描時計」を作ってみます。

井上 みやび子

執筆者:井上 みやび子

Perlガイド

CGIプログラミングのポイント1:「Perlのパス」を書く

1行目の「C:\strawberry\perl\bin\perl.exe」は「Perl の実行環境をインストール」でインストールした Strawberry Perl の場所です。(もし違う場所にインストールした場合は、インストールした場所に変更して下さい。)

今まで練習で作成してきたPerlプログラムは、実行する時は自分でコマンドラインから

% perl prog.pl

のように打ち込んで実行してきました。一方CGIプログラムの場合は、実行をWebサーバに任せてWebサイトに訪問者が来た時に自分に代わって実行してもらいますので、どのプログラム実行エンジンを使うか(この場合はperlですね)がWebサーバに分かるようにファイルの1行目に書いておくのがルールです。

CGIプログラムのポイント2:「HTTPヘッダ」も出力する

CGIプログラムの2番目のポイントは、出力の際に、表示したい内容に先立って「HTTPヘッダ」を出力する事です。

Mac環境の方は後で確かめていただきたいのですが、Windows環境の方は、ブラウザに表示された文字は「こんにちは」だけでしたね?

プログラムからは以下の出力も行っていますが、これはブラウザには表示されません。これが「HTTPヘッダ」です。

print "Content-Type:text/plain;charset=utf-8\r\n";
print "\r\n";

HTTPヘッダとは?

HTTPヘッダとは、ブラウザとWebサーバが内容をやり取りする時に、これから送る内容が何であるかを伝える、「荷札」のようなものです。ブラウザでWebサイトにアクセスしても通常これを目にする事はありませんが、実はブラウザとWebサーバは毎回この「荷札」を付けてから情報をやり取りしているのです。

ッダの役割

HTTPヘッダの役割


CGIプログラムからは「荷札」として、これから出力する内容が何であるかを示すHTTPヘッダを出力する必要があります。

この例の場合は、「こんにちは」というテキストを送りますので、

Content-Type:text/plain;charset=utf-8

というヘッダを送っています。

もしHTML形式でブラウザに表示したい場合は、

Content-Type:text/html;charset=utf-8

となります。

今の所はこの2つを覚えておけばOKです。

HTTPヘッダと出力内容の区別

では、プログラムから出力した内容がHTTPヘッダか、それとも出力したい内容なのかは、Webサーバやブラウザはどうやって区別しているのでしょうか?

場合によっては、

Content-Type:text/html;charset=utf-8
はHTTPヘッダの一例です。

とブラウザに表示したい場合もあり得ますね。

実はこれは非常に原始的な方法で、「1行空行があったらHTTPヘッダが終わったとみなす」というルールがあります。
このルールのために出力しているのが、「print "\r\n";」の行です。

print "Content-Type:text/plain;charset=utf-8\r\n";
print "\r\n"; #この出力が非常に大事
>次は: Mac環境でのテストプログラム
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます