![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
PerlモジュールのHTML::Templateを利用していますが、多重ループの書き方がわかりません。
以下のようなループがある場合、どのようにperlを記述したらいいでしょうか。
<TMPL_LOOP NAME=LOOPA>
<TMPL_VAR NAME=title>
<TMPL_LOOP NAME=LOOP_GUEST>
<TMPL_VAR NAME=guest_name>
</TMPL_LOOP>
<TMPL_VAR NAME=time>
</TMPL_LOOP>
ドキュメントを見ると下記のように記述するようですが、下記を値それぞれではなく、配列を利用する場合にはどのように記述すれば良いでしょうか。
$template->param(LOOP => [
{ name => 'Bobby',
nicknames => [
{ name => 'the big bad wolf' },
{ name => 'He-Man' },
],
},
],
);
No.1ベストアンサー
- 回答日時:
中盤の意味を掴みかねましたが、とにかく上記のテンプレートへ出力出来る構造体を考えてみます。
$template->param(
LOOPA => [
{ # ここから
title =>"TITLE1",
LOOP_GUEST => [
{guest_name => "NAME1"},
{guest_name => "NAME2"}
],
time => "TIME1"
}, # ここまでがLOOPAの一つの要素
{ # ここからは二つ目
title =>"TITLE2", # LOOPA内のTMPL_VAR titleで取り出せるtitle
LOOP_GUEST => [ # ここからLOOPA内のLOOP_GUESTの要素
{guest_name => "NAME1"}, # LOOP_GUESTの要素の一つ
{guest_name => "NAME2"} # TMPL_VAR guest_nameで取り出せるguest_nameをセットしている
], # ここまでがLOOP_GUEST
time => "TIME2"
}
]
);
なんとなく、わかったでしょうか?
要するに、TMPL_LOOPの部分はハッシュリファレンスの配列のリファレンスがセットされている必要があって、ループ内で配列の中身が一つ一つ展開され、その中で利用出来るテンプレート変数がハッシュリファレンスの内容のハッシュになっている、と。多重ループであっても、同じことの繰り返しです。
参考までに、ドキュメントの構造体を出力するテンプレートは
<TMPL_LOOP NAME=LOOP>
<TMPL_VAR NAME=name>
<TMPL_LOOP NAME=nicknames>
<TMPL_VAR NAME=name>
</TMPL_LOOP>
</TMPL_LOOP>
とかになると思います。
まぁともかく、いろいろ実験して体得してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript gasについて 1 2022/05/31 21:51
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Excel(エクセル) 複数のブックをひとつのブック(複数のシートにまとめる)場合にシートとの順番について 5 2022/12/28 20:47
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- フリーソフト Googleスプレッドシートで特定の言葉が含まれる行の色分けをしたいのですが 4 2022/04/30 15:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
if($key){ ($key eq 'aaa') ||...
-
画面を強制的に再描画させる方法
-
ListBox 複数選択 で オートフ...
-
VBA Dir関数でファイルをループ...
-
VBAのautofilter、criteriaの配...
-
VBAでの一時停止と再開の方法
-
DOSコマンドのループ内のTIMEコ...
-
DoEventsが必要な理由について
-
再帰関数のインライン展開
-
vb.netからエクセル関数書き込み
-
vb.netです。2次元配列の要素を...
-
vbscriptでIE自動入力(途中で...
-
UWSCの終了の仕方
-
まったく同じファイルのハッシ...
-
For文を使った九九表の作成
-
C言語でファクト関数を使わずに...
-
隣同士の数字を足し合わせる
-
チェックボックスのperlでの値...
-
ループフリー
-
ExcelVBA FindNextを使用して条...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
双方向リスト(?)
-
if($key){ ($key eq 'aaa') ||...
-
HTML::TemplateのTMPL_LOOPにつ...
-
連番ごとに印をつける
-
変数に何も入ってないとき
-
VB6の公式リファレンスはありま...
-
Perlのリファレンスについて
-
ハッシュを無名変数へ代入して...
-
DBIを使用してデータを連想配列...
-
bashのリファレンス的なWEB...
-
ハッシュの配列を作ることは可...
-
Yahooの掲示板のような掲示板を...
-
Perl構造体、出力方法
-
クラスの作り方
-
重複する値を表示しない
-
ファイルからデータを読み込ん...
-
サブルーチンの返値に配列のハ...
-
構造体の配列の指定方法
-
C言語について。
-
Perlで縦横変換のような事をし...
おすすめ情報