Is there a way to loop from a lower integer to an higher one? For example,
say an article has a rating of 4. I'd like to loop from 1 to 4 and print a
star at each iteration. The only way I can see of doing this is create an
array ref in the perl coder and pass that to the template, which seems a lot
of pointless effort

I've been trying to think of a way to do that with CSS, since currently I'd like to indent things based on a "level" variable passed through the template (and to complicate things, I'd like to max out at a certain point to avoid right-margin squish, considering that in a couple of cases the threads nest over two hundred levels deep).

With (one assumes) a rating system with its own ceiling, though, you could go with img src="blahblah/star<TMPL_VAR name="rating">.gif" or what have you, and just have a set of graphics with star1.gif having one star, star2.gif having two stars, and so forth.

If you just want to print 4 stars, then just do that.  * * * *

If you are looking for some indentation background, you could try something like the following on a div:

    style="background:url('star.gif') right repeat-y;"

If you are looking for something like <TMPL_FOR 1..4> then you probably need to re-evaluate why you need it - maybe you need to re-think your original problem.  That said, there have been previous discussions on whether the TMPL_xxx syntax should support user-defined extensions, and various people have their own hacks to allow such a feature (which would then allow you to build your TMPL_FOR).

What is the problem you are trying to solve?  Someone here might have solved it already...