RECOMMEND
SELECTED ENTRIES
RECENT COMMENTS
RECENT TRACKBACK
CATEGORIES
ARCHIVES
MOBILE
qrcode
LINKS
PROFILE
OTHERS

10
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--

dC Lab::blog

WEBやシステムや猫やその他諸々の雑記
<< 萌えDB? | main | PHP 4のサポートが終了するらしい >>
HTML::Templateのループで__first__が利かない?
ひさびさにこんなネタ。

PerlのCGIモノの仕事に着手してたのですが、
タイトルの内容ではまってました(´(・)`)

仕事でCPANのHTML::Templateのとこのサンプルを見ながらループ内で__first__などを使う処理を書いてみたけど、うまく動いてくれない。

<TMPL_LOOP NAME="FOO">
<TMPL_IF NAME="__first__">
This only outputs on the first pass.
</TMPL_IF>

<TMPL_IF NAME="__odd__">
This outputs every other pass, on the odd passes.
</TMPL_IF>

<TMPL_UNLESS NAME="__odd__">
This outputs every other pass, on the even passes.
</TMPL_IF>

<TMPL_IF NAME="__inner__">
This outputs on passes that are neither first nor last.
</TMPL_IF>

This is pass number <TMPL_VAR NAME="__counter__">.

<TMPL_IF NAME="__last__">
This only outputs on the last pass.
<TMPL_IF>
</TMPL_LOOP>

各<TMPL_IF NAME="__first__">などで指定してあるとこが、表示されてくれない。
<TMPL_VAR NAME="__counter__">なども中身が入ってこない。
ググッてみてもそんな例は出てこない。

・・・


なんでだ〜!!!


と、丸一日くらい悩んでから気が付きました・・・。

このサンプルの上のほうよく見ると・・・。
loop_context_vars - when this parameter is set to true (it is false by default) four loop context variables are made available inside a loop: __first__, __last__, __inner__, __odd__. They can be used with , and to control how a loop is output.

In addition to the above, a __counter__ var is also made available when loop context variables are turned on.


・・・えーっと、
when this parameter is set to true
って、loop_context_varsってオプションをonにすれば使えるYO!ってことですね?
(;つД`)

my $template = HTML::Template->new(filename => 'template.tmpl',
loop_context_vars => 1);

ってな風にオプションをつければちゃんと使えました。

ちゃんと説明よく読めよ!(#゚Д゚) プンスコ!>自分
| IT/SE/PG関連 | 19:22 | comments(0) | trackbacks(0) | pookmark |









http://blog.dc-lab.net/trackback/266156