PATH_INFOで検索クエリー + CGI::AppのAUTOLOAD
CGI::ApplicationのAUTOLOAD機能をつかった実験。
PATH_INFOで検索ワードを送ってみる。つまり、
http://example.com/app.cgi/検索ワード
な感じで検索をする。実際のページは以下。
http://nomadscafe.jp/test/cgiappautoload/app.cgi/
formのonsubmitに
this.action= this.elements['word'].value;
をいれてSubmitする。
わざわざこんなことをした訳は、CGI::ApplicationのAUTOLOAD機能を試すため。
CGI::AppのAUTOLOAD機能は、
sub setup{ my $self = shift; $self->run_modes( '__start_index'=>'do_index', 'AUTOLOAD'=>'do_search' ); }
と言う風になっていたときに、run_modeが__start_index以外のときはAUTOLOADに設定されたdo_searchがリクエストされたrun_modeを引数に実行されるのです。
$self->do_search($run_mode)
と。PerlのAUTOLOADと同じようなもの。
今回mode_paramを
$self->mode_param( path_info=>1 );
とPATH_INFOの1つ目の値=検索ワードとしているので、イメージ的には
$self->$検索ワード
実際は
$self->do_search($検索ワード)
な訳です。
これで何がしたいかというと、会員のmypage機能なんかを
index.cgi/User-ID
とかで実現できたらちょっとモテ系じゃないかと。でも実際のパターンとしては、
index.cgi/User-ID/run_mode
な形だとおもうので、CGI::Application::Dispatchの方をごにょごにょしてみる必要がありそうだな。
素直にmod_rewrite使うというのもありますが、、、。