![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
下記の?????の所にpushで配列のハッシュを作成しようと考えていましたが、うまくいきません。
下記のソース自体が的外れでしたら申し訳ございません。?????以外の場所も指摘して頂ければ幸いです。
よろしくお願い致します。
<TMPL_LOOP NAME="loop">
<TMPL_VAR NAME="one"><BR>
<TMPL_VAR NAME="two"><BR>
<TMPL_VAR NAME="three"><BR>
</TMPL_LOOP>
use HTML::Template;
@data = ('aa<>ab<>ac','ba<>bb<>bc','ca<>cb<>cc');
foreach $xxx (@data) {
my ($one,$two,$three) = split(/<>/,$xxx);
????????????????????
}
my $template = HTML::Template->new(filename=>'sample.html');
$template->param(loop=>\@loop);
print "Content-Type: text/html\n\n";
print $template->output;
No.1ベストアンサー
- 回答日時:
HTML::Template についてはよく知りませんが、???... の部分は無名ハッシュを push すればよいように思います。
push @loop, { one => $one, two => $two, three => $three };
ありがとうございます、無事解決できました。
ですが、サブルーチンにしたところまた分からない所がでてきました。
もしよろしければこちらも見ていただければ幸いです。
http://oshiete1.goo.ne.jp/qa4953602.html
この度は、ご回答ありがとう御座いました。
No.3
- 回答日時:
多重投稿申し訳ありません。
一箇所間違えてました。
push(@aLP01,\%hTMP);
は
push(@aLP01,\%hTmp);
としてください。
実際の動作確認していないので他にもあるかも・・・。
いちおう考え方の説明ということで許してやってください。
No.2
- 回答日時:
スクリプト側はこんな感じかと思います。
use HTML::Template;
@data = ('aa<>ab<>ac','ba<>bb<>bc','ca<>cb<>cc');
my %hDISP;
my @aLP01;
foreach $xxx (@data) {
my ($one,$two,$three) = split(/<>/,$xxx);
## ????????????????????
my %hTMP;
$hTmp{ONE} = $one;
$hTmp{TWO} = $two;
$hTmp{THREE} = $three;
## ????????????????????
push(@aLP01,\%hTMP);
}
$hDISP{LOOP}=\@aLP01;
## my $template = HTML::Template->new(filename=>'sample.html');
## $template->param(loop=>\@loop);
my $template = HTML::Template->new(filename => 'sample.html', 'die_on_bad_params' => 0);
$template->param(\%hDISP);
print "Content-Type: text/html\n\n";
print $template->output;
---------------------------------------------
やり方はループ内にハッシュを作ってループ外の配列にリファレンスをプッシュしてゆきます。
そのループのリファレンスを一旦ハッシュに入れた方が、ループ外のテンプレート指定も出来ますので便利です。
タグの名前は、大文字で指定しましたが、初期のTemplateモジュールが大文字しか使えなかった頃の名残で、今でもHTMLのタグと区別するのに見やすいのでわたしは大文字をいまだに使っています。現在では区別しますのでテンプレート側とで調整してください。
'die_on_bad_params'は保険なんですが、意味はご自分でお調べください。
丁寧なご説明ありがとうございます。
非常に分かりやすく勉強になりました。
これ自体は解決できましたが、サブルーチンにしたところまた分からない所がでてきました。
もしよろしければこちらも見ていただければ幸いです。
http://oshiete1.goo.ne.jp/qa4953602.html
この度は、ご回答ありがとう御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6の公式リファレンスはありま...
-
変数に何も入ってないとき
-
双方向リスト(?)
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
-
DoEventsが必要な理由について
-
VBのReturnの使い方
-
UWSCの終了の仕方
-
クラスに配列を渡す方法
-
範囲指定したセルを1つずつ飛...
-
プログラミングについて。 1つ...
-
VBA Dir関数でファイルをループ...
-
VBA Boxが空白の場合のメッセー...
-
vb.netからエクセル関数書き込み
-
エクセルVBAでTransposeの不思議
-
For文を使った九九表の作成
-
サブルーチン(共通の処理)の...
-
素数の個数を求めるプログラミング
-
アクティブセルから、A列最終行...
-
EXCEL VBA ユーザーフォームの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について。
-
高速に文字列の比較
-
VB6の公式リファレンスはありま...
-
連番ごとに印をつける
-
HTML::Templateのループと配列...
-
双方向リスト(?)
-
HTML::TemplateのTMPL_LOOPにつ...
-
プログラミングについて。 1つ...
-
画面を強制的に再描画させる方法
-
VBのReturnの使い方
-
どなたかこのプログラミングを...
-
VBAでの一時停止と再開の方法
-
VBA for i=1 to lastrow
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
-
ハッシュ検索はなぜ速い
-
GIFアニメをループさせたくない
-
Escキーを押すと、中断する時と...
おすすめ情報