単に画面に表示させるだけなら、HTMLで記述した方がはるかに簡単です。でもユーザーからの入力の結果を表示するにはJavaScriptやperlの手を借りる必要があります。そのためには、HTMLのファイルとCGIスクリプトを組み合わせる必要があります。まず、HTML文書からCGIを呼び出す部分から説明しましょう。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM ACTION="http://127.0.0.1/hkyoji/yoyaku.cgi">氏名<INPUT size="20" type="text" name="namae">
<INPUT type="submit" value="送信">
<INPUT type="reset">
</FORM>
</BODY>
</HTML>

上記の記述は、CGIスクリプトに引き渡す文字を入力してもらい、入力された文字をyoyaku.cgiに引き渡すためのものです。

<FORM ACTION="http://127.0.0.1/hkyoji/yoyaku.cgi">   

</FORM>

の部分にフォームが定義されています。"http://127.0.0.1/hkyoji/yoyaku.cgi"の部分はCGIを設置するディレクトリを指定しています。この部分は、自分の環境に合わせて書き換える必要があります。

<INPUT size="20" type="text" name="namae">

のname="namae" の部分でnamaeという変数を使用することが記述されています。

<INPUT type="submit" value="送信">
<INPUT type="reset">

の部分は送信ボタンとリセットボタンに関する記述です。次にこのHTML文書から呼び出されるCGIスクリプトは


!/usr/local/bin/perl
require 'cgi-lib.pl';
&ReadParse;
$name = $in{"namae"};
print <<hiyadoc;
content-type: text/html

<HTML>
<HEAD>
<TITLE>画面表示</TITLE>
</HEAD>
<BODY>
入力された名前は
$in{"namae"}
です。
</BODY>
</HTML>
hiyadoc

というようにしてみました。

require 'cgi-lib.pl';
&ReadParse;
$name = $in{"namae"};

の部分が入力されたデータを "namae” という変数にセットしているところです。cgi-lib.plは、入力されたデータを取り組むさいに使用されるライブラリファイルです。&ReadParse;の部分でライブラリを呼び出しています。以上の3行はユーザの入力した情報を配列変数へセットするときの決まり文句のようです。

print <<hiyadoc;
content-type: text/html

<HTML>
<HEAD>
<TITLE>画面表示</TITLE>
</HEAD>
<BODY>
入力された名前は
$in{"namae"}
です。
</BODY>
</HTML>
hiyadoc

の部分が入力された文字をHTML形式で表示する記述です。HTML形式で表示するのに1行ごとにprint文を使っていないことに気づきましたか?画面表示その1のプログラムでは1行ごとにprint文と改行マークの¥nを使用していましたが、今回はヒヤドキュメントを使用しています。これは

print <<hiyadoc;

hiyadoc

に囲まれた部分をすべてプリントするというものです。ここでhiyadocはprint文が実行される始点と終点を示しています。このhiyadocという文字の箇所には予約後を除く任意の変数が使用できます。