HTML::Templateモジュールを使ってCGIからテンプレートをセット際の、
TMPL_LOOPについて。

TMPL_LOOPの基本的な使い方としては、

・テンプレート記載
<!--TMPL_LOOP name="loop1"-->
    <!--tmpl_var name="naiyo"-->
<!--/TMPL_LOOP-->

・プログラム記載
my @value;
my @val = ('ルフィ','ゾロ','ナミ','ウソップ','チョッパー','ロビン');
foreach my $str (@val) {
    my %hash;
    $hash{naiyo} = $str;
    push(@value,?%hash);
}

$template->param(loop1 => ?@value);

とこんな感じです。
ループへのセットがわからない場合は先にそっちを勉強してきましょう。

で。

これ1個のループなわけなんだけど、ループの中にループ入れたいわけ。
そんな場合はこんな感じで書きます。

・テンプレート記載
<!--TMPL_LOOP name="loop1"-->
    <!--tmpl_var name="naiyo"-->
    <!--TMPL_LOOP name="loop2"-->
      <!--tmpl_var name="naiyo2"-->
    <!--/TMPL_LOOP-->
<!--/TMPL_LOOP-->

・プログラム記載
my @value;
my @value2;
my @val = ('ルフィ','ゾロ','ナミ','ウソップ','チョッパー','ロビン');
my @CP9 = ('指銃','月歩','紙絵','鉄塊','嵐脚','剃');
foreach my $str (@val) {
    my %hash;
    $hash{naiyo} = $str;
    foreach my $waza (@CP9) {
      my % 6shiki;
      $6shiki{naiyo2} = $waza;
      push(@value2,?%6shiki);
    }

    #ここで内側のループのハッシュを、外側のループのハッシュにセットする
   $hash{loop2} = ?@value2;

    push(@value,?%hash);
}

$template->param(loop1 => ?@value);

こんな感じです。
わかりにくいですか??わかりにくいよなぁ。。。