I would use
Template::Alloy's extensions to HTML::Template. It is much easier to access data and will probably run faster than using HTML::Template by itself.
#!/usr/bin/perl
use strict;
use warnings;
use Template::Alloy qw(HTML::Template);
use HTML::Template;
my $data = [
[qw{one two three}],
[qw{four five six}],
[qw{seven eight nine}],
];
my $tmpl = do{local $/;<DATA>};
my $t = HTML::Template->new(scalarref => \$tmpl) or die qq{tmpl obj fa
+iled\n};
$t->param({data => $data});
print $t->output;
__DATA__
<TMPL_FOR row IN data>
---------------------------
<TMPL_FOR i IN row>
<TMPL_VAR i>
</TMPL_FOR>
</TMPL_FOR>
The output will be same as the previous post.
my @a=qw(random brilliant braindead); print $a[rand(@a)];