CTK::CGI - yet another query engine
use CTK::CGI;
my $q = CTK::CGI->new;
$q->param(name => 'Mike');
$q->param(name => 'Junko');
my @names = $q->param;
$q->delete('name');
my %query = $q->Vars;
my $q = CTK::CGI->new;
新しいクエリーオブジェクトを作成します。 次のようにして、オプションのパラメータを指定することもできます。
my $q = CTK::CGI->new(multipart_dir => '/tmp',
delimiter => "\0",
buffer_size => 1024,
get_size_limit => 102400,
post_size_limit => 102400,
upload_size_limit => 512000,
debug => 0,
);
multipart_dir: multipart/form-data でアップロードしたファイルを一時的に保存するディレクトリ(デフォルト /tmp)
一時ファイルは、CGI-(時間)(プロセス番号)::(アップロード元のファイル名) のファイル名で保存されます。
delimiter: Vars で値を取得するときの区切文字(デフォルト \0)
buffer_size: multipart/form-data で POST されたデータを読み込むバイト数(デフォルト 1024 バイト)
get_size_limit: GET で取得する最大バイト数(デフォルト 102400 バイト)
post_size_limit: POST(application/x-www-form-urlencoded) で取得する最大バイト数(デフォルト 102400 バイト)
upload_size_limit: POST(multipart/form-data) で取得する最大バイト数(デフォルト 512000 バイト)
debug: デバックオプション(デフォルト 0)
debug => 1 の場合は標準入力からクエリーを取得します。
@values = $q->param('foo');
-or-
$value = $q->param('foo');
指定したパラメータの値を取り出します。値がない場合は、undef を返します。 パラメータを指定しない場合は、すべてのパラメータ名を配列で返します。
@names = $q->param();
パラメータに値を追加するには
$q->param(foo => 'value1', 'value2', 'value3');
のように記述します。 パラメータ foo が既にいくつかの値を持っている場合は、その値の後に追加されます。
%query = $q->Vars; -or- $query_ref = $q->Vars;
すべてのパラーメータと値をハッシュで取り出します。1 つのパラメータに複数の値がある場合は、\0 (デフォルト) で区切った値になります。
<HTML> <BODY> <FORM METHOD="post" ENCTYPE="multipart/form-data" ACTION="upload.cgi"> <INPUT TYPE="file" NAME="upload" SIZE="10" VALUE=""> </FORM> </BODY> </HTML>
upload.cgi:
$fh = $q->upload('upload');
while (<$fh>) {
print;
}
FORM に記述した NAME の値をもとにアップロードしたファイル(一時ファイル)のファイルハンドルを返します。 ファイルが存在しない場合は、undef を返します。
$path = $q->tmpfile('upload');
アップロードしたファイル(一時ファイル)のファイルのパスを返します。 一時ファイルが存在しない場合は、undef を返します。
$content_type = $q->file_type('upload');
アップロードしたファイルの Content-Type を返します。multipart/form-data を解析したときの値です。
$q->url();
現在の URL を返します。
$q->remove('foo');
指定したパラメータの値を削除します。
$errref = $q->errors; print "$_\n" for(@$erref); -or- @errors = $q->errors; print "$_\n" for(@errors);
発生したエラーを取り出します。
Yutaka Kojima <yutaka@asmate.net>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.