我需要编写一个简单的模板系统,其中包含两种类型的宏——变量(like <% TPL name=userName %>
)和函数(like <% TPL func=time param=now %>
or <% TPL func=rand %>
)。
没关系,但我需要添加模板编译。我想用 Perl 变量(<% TPL name=userName %>
to $userName
or $vars->{userName}
)和函数 to "Some text $rand->() blah blah"
or替换变量宏"Some text $func->{time}->('now') and blah blah blah"
。
我为变量做了它:
my $tpl = eval 'sub { my $vars = shift; "Hello, $vars-{userName}!" }';
return $tpl->({ userName => 'John' });
但我不知道如何为功能做到这一点。此代码不起作用:
my $tpl = eval 'sub { my $func = shift; "Today is $func->{time}->('day')" }';
return $tpl->({ time => \&_time });
如何使功能正常工作?
PS 我不需要另一个模板系统(TT、HTML::Template 或其他)