in reply to
Reading complex result-sets in Catalyst/Template
Update: Clarified some ambiguities.
I can't see any reason why that (template) code wouldn't work. It works for me locally (with some mocked up data in a structure as you described.) The headers are in the wrong position but you just need to shift them around a bit. See if this works for you locally. If this works for you, I suspect the data structure you are getting from your database query is not what you think it is in your program.
Generates a file named test.html. Open it with a browser.
use strict;
use warnings;
use Template;
my $tt = Template->new();
my $data =
[ {
city => 'thiscity',
country => 'thiscountry',
lat => 'thislat',
long => 'thislong',
name_urls => [
[ '', 'info1', 'info2', '', '', ['url1','url2','ur
+l3']],
[ '', 'info3', 'info4', '', '', ['url5','url6','ur
+l7']]
]
},
{
city => 'thatcity',
country => 'thatcountry',
lat => 'thatlat',
long => 'thatlong',
name_urls => [
[ '', 'info1', 'info2', '', '', ['url1','url2','ur
+l3']],
[ '', 'info3', 'info4', '', '', ['url5','url6','ur
+l7']]
]
},
];
$tt->process(\*DATA, {types => $data}, 'test.html') or die $tt->error(
+), "\n";
__DATA__
[% USE Dumper -%]
<table border='1'>
<tr><th>City/Locale</th><th>Country code</th><th>latitude</th><th>long
+ditude</th><th>Identity details</th></tr>
[% FOREACH type IN types -%]
<tr>
<td><table style="border: solid red 1px">[% FOREACH nu IN type.nam
+e_urls %]
<tr>
<td> [% nu.1 %] </td>
<td> [% nu.2 %] </td>
<td><ul> [% FOREACH id IN nu.5 %]
<li style="border: solid navy 1px">[% id %]</li>
[% END -%]
</ul></td>
</tr>
[% END -%]
</table></td>
<td>[% type.city %]</td>
<td>[% type.country %]</td>
<td>[% type.lat %]</td>
<td>[% type.long %]</td>
</tr>
[% END -%]