« Template-ToolkitはPure Perlでも動く | メイン | Class::DBIで複数データベースを扱う+register_cleanup »

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使うというのもありますが、、、。