in reply to HTML::Template - loop order

First problem can be fixed by turning on loop_context_vars and using the following:

<TMPL_VAR NAME=ID>: <TMPL_VAR NAME=NAME><br> <TMPL_LOOP NAME=CATEGORIES> <TMPL_VAR NAME=ID>/<TMPL_VAR NAME=TITLE><TMPL_UNLESS __last__> | </TMP +L_UNLESS> </TMPL_LOOP>

As for the second problem, I don't see another way around your problem beyond what you already have. The template is just presenting the data you gave it.

antirice    
The first rule of Perl club is - use Perl
The
ith rule of Perl club is - follow rule i - 1 for i > 1