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のファイル名を時間によって変更すれば,面白いでしょう。
Copyright (c)1997 GOMASUKE
Since 02/26/1997, Last Updated 02/26/1997