in reply to Populating options in html select.

If your main concern is freedom for the designer, then using your third solution (with the html_loop) is by far the best. No other solution gives the designer the option to switch to a list of checkboxes or radio buttons, or style individual options.

Here's an example of a styled select box:

<html> <style> .even { background-color: #ccc } .odd { font-weight: bold } </style> <body> <form> <select> <option class=odd> one <option class=even> two <option class=odd> one <option class=even> two <option class=odd> one <option class=even> two </select> </form> </body> </html>

You could use HTML::Template's __odd__ and __even__ attributes for this, for example. But there's no way to do this with your FillInForm subclass idea.