Il est probablement le meilleur faire ce genre de données dans votre contrôleur. Le travail de Template Toolkit est vraiment de mettre les choses au clair et de les rendre jolies, pas de faire des "calculs".
Ce que vous voulez est quelque chose comme:
[% SET list = formatter.group_them('namelist.txt') %]
[% FOREACH item IN list %]
[% item.key %]
[% FOREACH name IN item.value %]
[% name %]
[% END %]
[% END %]
Il est possible de faire ce que vous voulez dans une variété de façons. Vous pouvez utiliser VMethods http://template-toolkit.org/docs/manual/VMethods.html pour diviser, créer un tableau, diviser à nouveau, construire un hachage:
[% 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 %]
OK, je dois admettre, je serais mortifié de voir cela dans un modèle que j'ai hérité. Mais parfois, nous faisons les choses que mortifient autres pour une bonne raison ... au moment ... :-)
Une approche légèrement mieux est d'insérer
[% RAWPERL %]
bloc. Au moins, vous admettez, vous avez du code dans le modèle et vous effectuez les opérations de manière naturelle et efficace.