cgi-lib.plを使う

[HOME] [BACK] [NEXT]

ここではcgi-lib.plというライブラリーの使い方を説明します。これはperlでCGIプログラムを書くためには必須のライブラリーです。
※古い情報です。現在ではCGI.pmがすべての機能を引き継いでいます。新しくコードを書く場合こちらを採用してください。 2017/3/11

1.ライブラリーのインクルード

ライブラリーとは、便利なサブルーチンをパックしたプログラムです。これを使える様にするには以下の様に 「require文」をプログラムの中に記述します。この文以後、どこでもライブラリーの中に書かれているサブルーチン を呼び出す事ができます。

require ´mylib/cgi-lib.pl´;
これはCGIプログラムが有る場所をカレントディレクトリとしてその下の「mylib」というディレクトリにある「cgi-lib.pl」を 使える様にする記述です。サーバーがUNIX系マシンの場合これでOKですが、Windows系のIISやPWSというサーバー はこのカレントディレクトリを変えてしまう事が有るので、探索パスを保持している「@INC」という特殊配列変数に 以下の様に明示的に探索パスをセットした方が良いでしょう。
use ´/my_home/cgi-bin/mylib´;   
require ´cgi-lib.pl´;
又はWindows系では
use ´c:\InetPub\scripts\mylib´;   
require ´cgi-lib.pl´;
但しこの「use」文によるセットはPerl5以後でのみ使えます。ここでは記述しませんが 他にも探索パスのセット方法はいろいろあります。Perl4以下の場合は他の方法が必要です。 ## 2.サブルーチンReadParseについて cgi-lib.plの主サブルーチンはReadParseです。(他のサブルーチンは知りません) このサブルーチンは引数として適当な型グロブ名を渡すと、GET、POSTにかかわらず、送られてきたデータの (key)をキーとして(value)を格納したハッシュを戻してくれます。このハッシュ名は渡した型グロブ名です。 ## 3.使い方の一例 以下に私がやっている使い方を紹介します。
use ´/my_home/cgi-bin/mylib´;   
require ´cgi-lib.pl´;   
.............................   
ReadParse(*in);   
@get_key = keys %in; #ハッシュinのキーリスト取得   
$elenum = keys %in; #ハッシュinの要素数取得   
for ($iii=0;$iii<$elenum;++$iii){   
if ($get_key[$iii] =~ /h/){
  (処理1)
  last;
}
if ($get_key[$iii] =~ /s/){
  (処理2)
  last;
}   
.............................   

ReadParseを呼び出して送られてきたデータをハッシュ%inに格納した後、この%inのキーリストを 「keys」関数を使って配列@get_keyに入力します。そして、同じく「keys」関数を使ってスカラー $elenumに%inの要素数を入力しています。Perlでは配列をスカラーに代入する文を書くとその配列の要素数が スカラー変数に代入されます。

その後の「for」文は、0番目から$elenum-1番目のキーリストを順番に調べて、「h」を含むキーが見つかった場合 (処理1)を行い、「s」を含むキーが見つかった場合(処理2)を行った後「last」文で直ちにループを抜けます。 例えば処理1では、「$in{´h´}」という変数に入っているデータを使う処理を書きます。

この様にReadParseから受け取ったハッシュのキーを調べて処理を条件分岐する事ができます。また、通常GETで起動されたときとPOSTで起動された時ではその受け取ったデータの使い方を変えるので、GETとPOST用にそれぞれ上の様な処理を用意しておき、$ENV{´REQUEST_METHOD´} を参照して使い分けます。

[HOME] [BACK] [NEXT]

更新日: