KQuery.pm - 環境変数 QUERY_STRING・HTTP_COOKIE のデコード
use KQuery; $query = &get_query_string(); $cookie = &get_magic_cookie(); print "Content-Type: text/html\n\n"; $name = $query->{name} || $cookie->{name}; print "Name: $name\n";
use KQuery; により、以下の2つのサブルーチンが使用できるようになります。
$query = &get_query_string();
フォーム入力(GET/POST)のデコードを行い、ハッシュへのリファレンスを
返します。
フォーム変数 bar が入力された場合、その値は $query->{bar} で
参照できます。
$cookie = &get_magic_cookie();
クッキー入力のデコードを行い、ハッシュへのリファレンスを返します。
クッキー変数 foo が入力された場合、その値は $cookie->{foo} で参照できます。
どちらも、デフォルトでは変数中の日本語コードは EUC に変換されます。
ただし変換には、予め jcode.pl または Jcode.pm の呼び出しが必要です。
require "jcode.pl"; # jcode.pl を使う場合のみ use Jcode; # Jcode.pm を使う場合のみ
両方とも呼び出されている場合は、Jcode.pm が優先されます。
EUC 以外の日本語コードを使用する場合は、後述の charset= オプションを
指定してください。
各種動作オプションは、use KQuery 時に指定できます。
use KQuery qw( charset=jis ); use KQuery qw( charset=euc ); # default use KQuery qw( charset=sjis ); use KQuery qw( charset=utf8 ); # Jcode.pm only
変数中の日本語(全角文字)を指定コードに変換します。
デフォルトでは EUC に変換されます。(これが一番良いです)
また Jcode.pm を使用した場合のみ、utf8 を指定できます。
use KQuery qw( convopt=z ); # default use KQuery qw( convopt=h );
変数のコード変換時のオプションを指定します。
z の場合は、半角カナ文字を全角カナ文字に変換します。
h の場合は、全角カナ文字を半角カナ文字に変換します。
use KQuery qw( emoji=geta ); # default use KQuery qw( emoji=delete ); use KQuery qw( emoji= );
変数中に携帯電話ブラウザによる絵文字が含まれる場合の動作を指定します。
geta の場合は、絵文字をゲタ文字“〓”に変換します。
delete の場合は、絵文字を変換せずに、単に削除します。
空指定の場合は、絵文字の変換・削除を行ないません。(文字化けの可能性大)
i-mode 及び J-PHONE の絵文字のみに対応しています。(EZには絵文字はない)
他のブラウザでは、絵文字処理ルーチンは呼び出されません。(処理しない)
use KQuery qw( array=never ); use KQuery qw( array=checkbox ); # default use KQuery qw( array=always );
同じ名前のフォーム変数が複数存在する場合の処理を指定します。
主にチェックボックスの処理において必要になります。
never の場合、複数存在しても最後に登場したもののみを上書き保存することで
必ずスカラー値を返します。(登場順序はブラウザに依存します)
checkbox の場合、複数存在する変数のみを値を配列化して保存します。
複数存在しない変数については、通常通りスカラー値を返します。
変数fooの2番目の値は、$query->{foo}->[1] でアクセスできます。
always の場合、同じ変数名の複数存在の有無に関わらず、全ての変数を
配列へのハッシュとして保存します。
複数のオプションを指定する場合は、それらを qw()
の中に並べてください。
use KQuery qw( charset=euc convopt=z emoji=geta array=checkbox );
またこれらのオプションは、use 後にサブルーチン呼び出しでも変更できます。
( use 時のオプションに変数を指定するのは面倒なので)
KQuery::set_option(qw( array=checkbox )); KQuery::set_option({ "array" => "checkbox" });
use KQuery 時と同じ形式のオプションか、ハッシュを渡してください。
リファレンスがよく分からない方は、以下のようにデリファレンスすれば、 従来ありがちなクエリー入力の変換ルーチンと同様にご利用いただけます。
use KQuery; %query = %{&get_query_string()}; foreach $key ( keys %query ) { print "$key = $query{$key}\n"; }
ただ個人的には、リファレンスを使ったほうが $ や % も含めた変数名が 統一できてきれいだと思うので、お勧めです。(性能は変わりません)
http://www.kawa.net/works/perl/query/
Copyright 1998-2000 Kawasaki Yusuke u-suke [at] kawa.net