TTでサブルーチン

TTにクロージャを渡せるということを知らなかったので、ドキュメントを読んだ

Catalystだとコントローラーでクロージャ作ってTTに渡せばプラグイン化するまでもないちょっとした処理はOKっぽい。

Virtual Methodsはpythonみたいだ。メソッドとして使いたいものはこっちで書いたほうがいい気がするが、プラグイン化するのが前提っぽいのでお手軽感がちょっと減る。

というわけで、上記のどちらかを使えば、PERLブロックはあまり使わなくてもいいような気がしてきた。この前のPERLブロックは後で書き直す。

CatalystのTTでeval_perl

Catalystの設定ファイルのyamlにEVAL_PERLを入れておくとTTでperlのコードが使える。

      INCLUDE_PATH:
              - 'root/templates'
      TEMPLATE_EXTENSION: '.tt'
      EVAL_PERL: 1

とかやっておくと

[% PERL %]
    print $stash->{tags};
[% END %]

みたいに書ける。

やりたいことはちょっとした加工だったので、ホントはvirtual method使いたかったのだけど、catalystのどの部分でdefine_vmethod呼べばいいのかイマイチわからなかった。

それにしてもTTでperlのコード書くのはちょっと気持ち悪い。