2011-07-06 8 views
0
foreach $result (keys %{$results_ref}){ 
    $source = $results_ref->{$result}->{abs_path}; 
    $source =~ s#/home/##; 
    print "<div><img src=\"$source\" /></div>"; 
} 

HTML:Templateだけで基本的な構文をサポートしているようです。上記のようなロジックをどうすればできますか?あなたはハッシュする配列リファレンスでそれを行うだろうかはHTMLに問題がある::テンプレート

print $hash{LEFT}; 
foreach $i ($hash{START}..$hash{END}){ 
    if($pager == $i){ 
     print "<span>$i<span>"; 
    } 
    else { 
     print "<span><a href=\"/index.pl?page=$i\">$i</a></span>"; 
    } 

UPDATE

ハッシュする配列リファレンスは必ずしも十分ではありません、次の例を考えてみ?

答えて

2

あなたの質問が正しく理解されたら、TMPL_LOOPタグを探していると思います。

ハッシュの配列を作成し、それを変数としてparam()呼び出しに渡します。次にforeachで行っていたことを構築するにはTMPL_LOOPを使用してください。

<!--TMPL_LOOP NAME="sourcesloop"--> 
    <div><img src="<!--TMPL_VAR NAME="source"-->" /></div> 
<!--/TMPL_LOOP--> 

EDIT(更新に応じ):次にテンプレートで

my $sources_loop = []; 
foreach $result (keys %$results_ref) { 
    $source = $results_ref->{$result}->{abs_path}; 
    $source =~ s#/home/##; 
    push(@$sources_loop, { source => $source }); 
} 

$template->param(sourcesloop => $sources_loop); 

私が正しく理解していれば

ここでも、私はのロジックを駆動するために異なるキーを使用しますテンプレートループ

<!--TMPL_VAR NAME="hashleft"--> 
<!--TMPL_LOOP NAME="sourcesloop"--> 
    <!--TMPL_IF NAME="lone"--><span><!--TMPL_VAR NAME="lone"-->"</span><!--/TMPL_IF--> 
    <!--TMPL_IF NAME="linked"--><span><a href="/index.pl?page=<!--TMPL_VAR NAME="linked"-->"><!--TMPL_VAR NAME="linked"--></a></span><!--/TMPL_IF--> 
<!--/TMPL_LOOP--> 

EDIT:$ハッシュ{LEFT}

+0

を含むように更新だから、唯一のオプションは、配列の参照を渡すことであるあなたは、テンプレートTMPL_LOOP

my $sources_loop = []; foreach $i ($hash{START}..$hash{END}){ if($pager == $i){ push(@$sources_loop, { lone => $i }); } else { push(@$sources_loop, { linked => $i }); } } $template->param(sourcesloop => $sourcesloop, hashleft => $hash{LEFT}); 

の一部としてTMPL_IFを持つことができますか? –

+0

HTML :: Templateは、テンプレートループ用の匿名ハッシュの配列リファレンスを必要とします。それはそれが設計された方法です。また、匿名ハッシュにも多くのキーがあることに注目する価値があります。 –

+0

しかし、場合によっては、ハッシュの配列参照の代わりにハッシュ参照を渡したいだけです。 –

関連する問題