スクリプト名の区別によるssiモードの作り方

CGIテクニック集トップへ





概要

イベントカレンダーメッセージボード5等のように同じスクリプトながら起動するスクリプト名によって自動的に実行するコードを選択させます。例としてnormal.cgiというスクリプトをssimode.cgiという名前で保存またはシンボリックリンクし、その名前で起動するとそれ専用のコードを自動で実行させることができます。

必用な処理

  1. 実行スクリプト名を抽出する
  2. スクリプト名がSSIモード用か判断し、そうであればそれ専用ルーチンを実行する

サンプルコード

 use File::Basename;
 
 my $script = basename($0);
 
 if ($script eq 'ssimode.cgi'){
   &ssimode;
 else {
   &normalmode;
 }

コードの解説

 use File::Basename;
 
 my $script = basename($0);

File::Basenameのメソッドbasenameで$0に入っている実行スクリプト名からパス部を除去し、$scriptに挿入します。

 if ($script eq 'ssimode.cgi'){
   &ssimode;
 else {
   &normalmode;
 }

実行スクリプト名$scriptがssimode.cgiであれば&ssimodeルーチンを実行、それ以外であれば&normalmodeルーチンを実行します。SSI用ルーチンを&ssimodeに記述してあれば通常のコードと処理を分けて自動的にそちらを実行するようにできます。

関連するCGIテクニック

スクリプト名をファイル名から自動的に取得
SSIスクリプトへの引数の渡し方