我需要在Template toolkit中检测附件到数组类型的一些变量。 有最佳做法吗?
答案 0 :(得分:3)
可以定义一个自定义虚方法,该方法返回所提供变量的ref类型。粗略的例子:
#!/usr/bin/perl
use strict;
use warnings;
use Template;
use Template::Stash;
$Template::Stash::SCALAR_OPS->{ ttref } = \&ttref;
$Template::Stash::LIST_OPS ->{ ttref } = \&ttref;
$Template::Stash::HASH_OPS ->{ ttref } = \&ttref;
my $t = Template->new( );
$t->process( \*DATA, { vars => [ 1, [ ], { } ] } );
sub ttref
{
return ref $_[0];
}
__DATA__
[% FOREACH var IN vars -%]
ref type of [% var %] is [% var.ttref %]
[% END %]
输出:
ref type of 1 is
ref type of ARRAY(0x9cfbd0) is ARRAY
ref type of HASH(0x9cfc00) is HASH
答案 1 :(得分:2)