我可以使用Template Toolkit找出变量是否为数组?

dgB*_*gBP 3 html template-toolkit

我将多选框的结果传递给页面,以便可以在屏幕上显示选择.由于它是多选的,结果可以是标量或数组引用.有没有办法找到这个?我在网上找不到任何东西,但我认为可能有一个.array或一个.array_ref令牌可用于验证.我正在使用Template Toolkit,Perl和Dancer.

所以这就是我得到的标量:

<% IF multitext %>
    Text: <% multitext %>
<% END %>
Run Code Online (Sandbox Code Playgroud)

我想要的是......

<% IF multitext %>
    <% IF multitext.array_ref %> <!-- whatever works! -->
        <% FOREACH text IN multitext %>
            Text: <% text %>
        <% END %>
    <% ELSE %>
        Text: <% multitext %>
    <% END %>
<% END %>
Run Code Online (Sandbox Code Playgroud)

RET*_*RET 8

如果<%- multitext.0 -%>返回非零值,则为arrayref.

如果<%- multitext.keys.size -%>返回非零值,则为hashref.

我通常处理它的方法是强制它成为一个数组,如果它是一个标量,例如:

<%- SET items = multitext.0 ? multitext : [ multitext ];
    FOREACH item IN items;
        ...
    END; -%>
Run Code Online (Sandbox Code Playgroud)