周辺のちょっとしたものも含めてだいたい把握した気がするCGI::Application::Dispatch。便利です、すごく、とても。
ただ、今までCGI::Applicationを使う時はPATH_INFOを使わず、テンプレートファイルはインスタンスCGIと同じパスにおいてたので、テンプレートファイルをどこかひとつのディレクトリ以下にまとめる(CGI::Application::tmpl_path())、というのに全然まだ慣れません。
インスタンスCGIとテンプレートファイルを同じディレクトリにおくと、「URIの階層=ファイルのありか」になるので、HTML内のリンクを相対パスで書くのも気になりませんでした。
でも、CGI::Application::Dispatchを使う場合は、PATH_INFO形式を利用することが前提なうえ、URIが全部、
http://example.com/dispatch.cgi/モジュール名/Runモード
な感じになります。階層が全部一緒です。こうなると、今までの「URIの階層=ファイルのありか」という方法でテンプレートを並べて、リンクURIを相対パスで書く、というのが不便になりました。URIたびたび間違うし…。
で、今のところ、
- 相対パスは使わない
- CGI::Application::tmpl_path()で指定するのはcgiがあるパスとは別のところ
という使い方をしてます。でも、絶対パスでリンクURIを書いたことがほとんどないので、URIがかわると全部置換する必要があるなぁ、なんてたぶん無用な不安を抱いたりもしています。この不安が解消されるまでは、しばらく右往左往しそうです。
どこかに、こういうディレクトリ構成のガイドとか、絶対パス・相対パスどっちできじゅつするのがよいかHowToみたいのはなかろうか…。うろうろ。
追記(2005/09/24) : こちらでDispatchについてまとめました。