代码之家  ›  专栏  ›  技术社区  ›  Sinan Ünür

使用Perl的Template.pm,如何从数组中选择一个随机元素并将其输出?

  •  2
  • Sinan Ünür  · 技术社区  · 16 年前

    假设我的模板中有以下内容:

    [%- pages = [ 'one', 'two', 'three' ] -%]
    
    <p>Go to page [%- ... -%]</p>
    

    EVAL_PERL 设置(即,我不能使用 [%- PERL -%] 块),我需要在 [%- ... -%]

    <p>Go to page "a randomly picked element of pages"</p>
    
    2 回复  |  直到 16 年前
        1
  •  9
  •   Sinan Ünür    16 年前

    rand 默认情况下,在模板中,您必须通过其他代码(如 Slash )或使用 Template::Plugin::Math

    [%- USE Math -%]
    
    [%- pages = [ 'one', 'two', 'three' ] -%]
    
    <p>Go to page [%- pages.${ Math.rand(pages.size) } -%]</p>
    

    输出:

    $ tpage test.html
    
    <p>Go to page three</p>
    
        2
  •  4
  •   brian d foy    16 年前

    [%PERL%]

    此外,我在控制器中尽可能多地计算并传入要使用的值的数据结构。我尝试从不在模板中选择值或创建新值。一旦您将逻辑移动到模板中,当您有另一组模板时,您必须重新定义它。

    推荐文章