CGIでよく利用されているPerlを使って,実際にCGIプログラムを作ってみます。
CGIのプログラム言語には,「Perl」や「Ruby」,「PHP」などがよく利用されています。ここでは古くから使われているPerlを使います。Perl は,スクリプトをそのまま実行できるインタプリタ方式の言語です*1。そのため,記述したプログラムがすぐに試せるという特徴があります。C言語に記述が似ており,printf命令などを同じように利用できます。
Perlは特に,文字列の処理が得意です。文字列の加工などが簡単に行えます。さらに,Perl ver5.0以降では,よく使うロジックをライブラリのように集めた「モジュール」という仕組みが利用できます。用途にあったモジュールを機能を組み込むだけで,複雑なプログラムを簡単に記述できます。なお,この“モジュール”は,Apacheのモジュールやカーネルのモジュールとは別のものです。
Fedora8では,Perl5.8.8が導入されています。
Perlでは,各命令の最後に「; 」を付けます。文字を出力するprintf 命令であれば,
|
のように記述します。
改行したい場合は文字列内に「n」を付けます。さらに,printf内で,「@」や「"」といった記号を文字として利用する場合は直前に「」マークを付けて「@」や「"」のように書きます。
変数には頭に「$」を付けます。代入する際や値を利用する場合のどちらでも「$」を付ける必要があります。例えば,「$x」や「$var」のように記述します。
Perl で利用できる主な命令を表1に示します。
表1●Perlの主な命令・制御文 |
では,簡単なCGIプログラムをPerlで作成してみましょう。図1は,現在の時刻を取得し,Webブラウザで閲覧できるようにしたプログラムです。1行目の「#!/usr/bin/perl」はこのスクリプトを読み取って実行するPerlのインタプリタ・プログラムのパスを示しています*2。
|
図1●Perlで作成したCGIプログラムの例 図のプログラムは現在の時刻を取得して,HTML形式で出力する。 |
空行を挟んだ3行目で,localtime()関数を使って現在の時刻を入手し,前半にある変数に秒,分,時,日,月,年に分けて代入しています。1月が0,2月が1となるため4行目で1を足しています。年では1900年から数えるため,1900を足しています。7行目以降はWebブラウザに送るHTMLを出力します。
作成したファイルはCGIが実行できるディレクトリに配置し,実行権限を付加することで,Webブラウザからアクセスして,結果のHTMLが取得できます。