理系学生日記

おまえはいつまで学生気分なのか

CGI::Application での Run mode 決定

まだあんまし CGI::Application 分かってないんだけど,CGI::Application を使ったときのアプリの動作(どの関数が呼び出されるか)は Run mode で決まる.
じゃぁどこで Run mode が決まるかというと,実際に決定がなされているのは CGI::Application::__get_runmode.特別何かしない限りはこの関数中の以下の部分が実行される.

	# Get run mode from CGI param
	else {
		$rm = $self->query->param($rm_param);
	}

$self->query で返ってくるのは CGI クラスであり,CGI::param を呼び出していることから,結局 QUERY_STRING によって Run mode が設定されるのがわかる.
Run mode はメソッドに対応しているので,結局アプリケーションクラスの Run mode が多くなるほどそのアプリケーションクラスは肥大化してくことになる.

そこでアプリケーションクラスを分割しようとすると,それぞれのアプリケーションクラスをインスタンス化するのに個別の CGI ファイルが必要になる.これが意外にメンドい.
このあたりの問題は

に詳しい.