90章.CGIうんちく

CGIの概要は他サイトのページへ譲るとして,ここではperlスクリプトについて,あれこれ綴ってみようと思います。

90.1.CGIで実行させるperlスクリプト

CGIスクリプトは,入力とファイル処理と出力の三つの動作が基本です。
入力したメッセージをどのような形式でファイルへ保存し,どのように出力させるのかが難しいところです。

何の命令もないプログラム(スクリプト)を除いて最小のプログラムとは,どのような物でしょうか。

END  exit;

これではN88BASICもperlも何もしていません。
ここで,注意しなければいけないことは,exit;をCGIスクリプトとして実行させるとき,これだけでは間違いです。
CGIはperlのみで動作するわけではありません。sh,cshやCもあります
そこで,CGIスクリプトとして何で実行するのか指示しなければいけません。

#!/usr/bin/perl
# ~~~~~~~~~ path
exit;

と一行目に指示します。perlのパス(path)については,webmasterなどシステム管理者に問い合わせて下さい。

さあ,実行してみましょう。/home/foo/test.plに,このサンプルがあるとします。

<A HREF="/home/foo/test.pl">テスト</A>
をクリックすると何が表示されますか?
『文書にデータがありません』のようなメッセージが表示されると思います。
というか,これはやってはいけません。念のため。

では『Hello! perl』と表示させることにしてみましょう。

#!/usr/bin/perl
# ~~~~~~~~~ path
print "Hello! perl\n";
exit;

で良さそうですが,これではダメです。
サーバに,まだ指示することがあります。printなど表示命令を実行する前(直前でなくても良い)にヘッダを追加します。
HTML文書などのテキストは,text/htmlです。

#!/usr/bin/perl
print "Content-type: text/html\n\n";  #ヘッダ
print "Hello! perl\n";
exit;

表示されないブラウザがあるかもしれませんが,Netscapeなどは表示されると思います。
『print "Hello! perl\n";』命令以下をHTML記述でアレンジすれば良いのです。

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<HEAD>";
print "<TITLE>test</TITLE>";
print "</HEAD>";
print "<BODY>";
print "<CENTER><FONT SIZE=6>";
print "Hello! perl";
print "</FONT></CENTER>";
print "<HR>";
print "[<A HREF=\"index.html\">HOME</A>]";
print "</BODY>\n";
exit;

ヒア文字列を利用する場合は

#!/usr/bin/perl
$a = <<EOF;  # 文字列"EOF"のある行までの文字列が$aに代入される
<HEAD>
<TITLE>test</TITLE>
</HEAD>
<BODY>
<CENTER><FONT SIZE=6>
Hello! perl
</FONT></CENTER>
<HR>
[<A HREF=\"index.html\">HOME</A>]
</BODY>
EOF

print "Content-type: text/html\n\n";
print "$a\n";
exit;

90.2.画像を表示する

画像を表示してみましょう。
<IMG SRC="/home/foo/test2.pl" ALT="ロゴ">

#!/usr/bin/perl

$gif_file = "/home/foo/gif/logo.gif";

print "Content-type: image/gif\n\n";
open(GF,"<$gif_file");
print (<GF>);
close(GF);

exit;

$gif_fileのファイル名を時間によって変更すれば,面白いでしょう。


[HOME]

Copyright (c)1997 GOMASUKE
Since 02/26/1997, Last Updated 02/26/1997