【Webプログラミング - Code.001】CGI(Perl)基本動作 その1:「HelloWorld!」

   Code.001                                                 2002年10月05日発行
■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━■
                           【 Webプログラミング 】

                       〜 猫的プログラマーとその軌跡 〜
■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━■

              ▼毎週月曜日に配信しています。
              ▼等幅フォントでご覧いただくとキレイに見えます。
              ▼登録・解除はこちらから可能です。
                < http://www.ichikoro.com/webp/ >
                  ※ぜひお友達にもご紹介ください(^^)/

  みなさん大変お待たせいたしました!
  編集兼ライターの勝部です。

  今回から内容的にググッとシンプルになります。
  「ファイル処理」「メール」「DB」など一つテーマを決め数回に渡り取り上げ、
  その中ですぐに使えるサンプルプログラムを掲載・解説をするという流れです。

  購読し続ければ、メールボックスの中にリファレンスが出来上がるという寸法。
  勉強している人にはうれしい構成なのです。

  え?これまでの連載はって?
  ご安心ください。Webサイト上で引き続き行っていく予定です。ただ、更新日は
  不定期です(^^; 新しい原稿を上げたらこのメルマガでもお知らせいたします。

  というわけで、今後もWebプログラミングをよろしくお願いいたします!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 CGI(Perl)基本動作 その1:「HelloWorld!」
──────────────────────────────────────
しばらくの間はPerlを使用したCGIを取り上げます。
今回はその第一回。まずは実行する方法を覚えましょう。

───────
    ソース
───────
#!/usr/bin/perl

print "Content-type: text/plain\n";
print "\n";
print "Hello!World";

exit(0);


───────
   実行方法
───────
テキストエディタ(メモ帳やSimpleText)などで上記のソース(プログラム)を
保存し、CGIとして実行してください。

    ■大雑把な手順
        (1)テキストエディタに上記のソースをコピー&ペーストします。
            ※一行目はあなたの環境に合わせて変更してください。
             よく分からない場合は、あなたが契約しているISPのサポートか、
             システム管理者に「Perlのフルパスを教えてくれ」と聞いてく
             ださい。

        (2)hello.cgiなど、適当な名前をつけて保存します。
            ※大抵の場合、拡張子は「.cgi」でなければなりません。

        (3)FTPクライアント(FFFTP,Fetchなど)を使用し、Webサーバに
         アップロードします。必ずアスキーモードで上げましょう。

        (4)先ほどアップロードしたファイルを、FTPクライアントやtel
         netなどで、パーミションを 755 に変更してください。
            ※実行権限を与えれば良いので、
             755でなくてもかまいません。

        (5)上記のファイルをブラウザで訪れます。


InternalServerErrorなどが出る場合は以下を確認してください。

    □CGIは何も設定などしなくても使えるか
        ※.htaccessなどの設定が必要な場合があります。
         またISPによってはCGIの使用が禁止されています。

    □サーバにPerlはインストールされているか、また実行権限があるか。

    □Perlのパス(一行目)は正確か

    □ファイル名は「xxxx.cgi」か

    □アスキーモードで上げているか

    □パーミションの設定を正確にしているか

    □訪れたURLは正確か

もしどうしても分からない場合はサポートBBSでご質問ください。
http://www.ichikoro.com/webp/bbs/

───────
    解 説
───────
ソースを追いながら、順番に解説していきましょう。

> #!/usr/bin/perl
1行目については、上にある「CGIを動かすには?」をご覧ください。


> print "Content-type: text/plain\n";
printした物が、直接ブラウザにわたります。
(実際には、まずWebサーバが受け取った後にブラウザへ渡しています)
この行は、

    「これから渡すデータが何か」

を表しています。
CGIのルールとして、必ずこの行が必要になります。
これを記述しないとInternalServerErrorとなり、期待した動作をしてくれなくなり
ます。

ここでは“text/plain”つまり「テキスト」を表します。\nは改行のことです。
この、“text/plain”の部分がHTMLの場合は“text/html”となり、GIFの場合は
“image/gif”などとなります。


> print "\n";
データの種別が何かを渡したら、今度は改行だけの「空行」をブラウザに渡します。
これが区切りとなり、データの情報と実際のデータがどこで分かれているかを判別
するキッカケになるのです。


> print "Hello!World";
空行の後は、実際のデータを渡します。
この"Hello!World"の部分を色々と変えて実行しると楽しいですよ。


> exit(0);
exitはプログラムを終了する命令(関数)です。
この場合は無くても問題ありません。
    ※プログラム終端まで実行すると自動的に終了します


───────
   次回予告
───────
次回はCGIにデータ(クエリ)を渡す方法を紹介します。

───────
  分からない
───────
いまいちよく分からない場合は、以下へれっつらごー。

    ・サポートBBS
      このメルマガ専用のサポート掲示板
          http://www.ichikoro.com/webp/bbs/

    ・CGIプログラミングML
      CGIなどWebに関する話題を繰り広げるメーリングリスト
      このメルマガとは何の関係もありませんので発言時は注意を。
          http://www.ichikoro.com/cgi/ml/


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                           編    集    後    記
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

この原稿を仕上げている日の朝(金曜日)、高校時代の担任から電話がかかってき
ました。以前お話したとおり、大学入試を受けるために必要な書類を依頼してい
た件だったのです。何年ぶりでしょう?すごく懐かしかったです。

  かつべ「あれ?先生って今もこの高校なんですか?」
  元担任「お前らが出た後異動になって、今年帰ってきたんだよ」

最初電話した時は全く知らない先生だったので、どうなる事かと思ったのですが、
元担任に書類をまとめてもらえるなら、これ以上の安心はありません。何か運命を
感じた瞬間でした。

そうそう、会社に相談したところ、快くお願いを聞き届けてもらい、いい環境に
めぐり合えたなぁと、うれしい気持ちで一杯でした。


藤原和博さんの著書「リクルートという奇跡」の中に出てくる、リクルートが事件
前まで掲げていた「自ら機会を創り出し、機会によって自らを変えよ」という社訓が、
頭の中に響いています。

今度のことを決心していなかったら、自分がどんな環境にいるのか改めて考える
ことは無かったでしょうし、色々な人と接点を持つこともなかったと思います。
何でもいいから、自分できっかけを作りさえすれば、きっと出口がみつかるんじゃ
ないか、そんなことを考えていました。

しかし.....受かるかなぁ。
今のところ、それが一番の問題だ(笑)


さて、2ヶ月あまりの充電期間ありがとうございました。
これからは毎週月曜日にお届けする予定です。気まぐれ屋なので、また小休止を
いただくこともあると思いますが、温かい目で見守ってやってください。
よろしくお願いいたします。

それでは、また来週(^^)/


#今日は2X歳の誕生日です。
#どうやらカーセンサーの創刊日らしいです(笑)

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

                   【 Webプログラミング Code Sample 】

                    発  行 : ichikoro.com
                発行責任者 : 勝部 麻季人
                              < katsube@ichikoro.com >
                 Webサイト : < http://www.ichikoro.com/webp/ >
            お問い合わせ先 : < mm-webp@ichikoro.com >

                            Powerd by まぐまぐ
    All Right Reserved, CopyRight(C) 2001 Webプログラミング Code Sample
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■