I often find it helpful to think about the template first and then see what the data structure that fills it would have to look like. This is how I'd write a template for the output you want:
<ul>
<TMPL_LOOP states>
<li> <TMPL_VAR state>
<ul>
<TMPL_LOOP people> <li> <TMPL_VAR person> </TMPL_LOOP>
</ul>
</TMPL_LOOP>
</ul>
Now that we know where the loops and vars go, we can figure out what kind of data structure we need. TMPL_LOOPs need something like
loop_name => [ { .. }, { .. }, .. ]. (A reference to an array of hash references). TMPL_VARs just need
var_name => "scalar". So in order to fill out this template, you'll need data that is structured like this:
my @states = (
{
state => "Alaska",
people => [ { person => "Joe Blow" },
{ person => "Peter TorkM" } ]
},
{
state => "California",
people => [ { person => "Lily White },
{ person => "Erik Svendater" } ]
},
...
);
$tmpl->param( states => \@states );
If you have your data already in some other form, and have questions about how to get it into a data structure like this, let us know and we can probably help with that too..
blokhead