コントローラーでこの種のデータ変更を行うのがおそらく最善です。テンプレート ツールキットの本当の仕事は、物事をレイアウトして見栄えを良くすることであり、「計算」を行うことではありません。
あなたが望むのは、もっと似たものです:
[% SET list = formatter.group_them('namelist.txt') %]
[% FOREACH item IN list %]
[% item.key %]
[% FOREACH name IN item.value %]
[% name %]
[% END %]
[% END %]
やりたいことをいろいろな形で実現できます。VMethods http://template-toolkit.org/docs/manual/VMethods.htmlを使用して、分割、配列の作成、再度分割、ハッシュの構築を行うことができます。
[% data = INSERT 'namelist.txt' %]
[% lines = data.split("\n") %]\
[% list = {} %]
[% FOREACH line IN lines %]
[% pair = line.split(': ') %]
[% city = pair.0; name = pair.1; list.city.push(name) %]
[% END %]
承知しましたが、私が継承したテンプレートでこれを見ると悔やまれます。しかし、私たちは正当な理由で他人を屈辱にすることをすることがあります... その時... :-)
少し良いアプローチは挿入することです
[% RAWPERL %]
ブロック。少なくとも、テンプレート内にコードがあり、自然で効率的な方法で操作を行っていることを認めています。