HTML::Widgetだと細かいところに手を入れにくいいので、 Catalyst::Controller::FormBuilderに変えてみたらよさげ。
フォームの設定とかバリデートの情報はYAMLで。しかもデフォルトがTTSiteみたいな階層を取っているので管理しやすい。例えば/books/editに対応する設定ファイルはroot/forms/books/edit.fbと言った具合にfbっていう拡張子をつけておけばよい。
TTで使う場合には
[% FormBuilder.render %]
でよくて細かくいろいろいじりたい場合には
[% formbuilder.start -%] ... [% END %]
で。