这是一个关于 Perl 模板工具包的问题。
我使用启用了以下选项的小命令行实用程序呈现我的模板
DEBUG => Template::Constants::DEBUG_UNDEF,
语法是render <file.tt> var1 val1 var2 val2 ....
这非常方便,因为用户会收到有关需要定义的值的提示,例如
$ render file.tt
undef error - var1 is undefined
$ render file.tt var1 foo
undef error - var2 is undefined
$ render file.tt var1 foo var2 bar
... template renders correctly
对于某些(可选)值,模板提供默认值,例如:
[%- DEFAULT
hostname = 0
%]
然后模板正文通常包含:
[% IF hostname %] hostname = [% hostname %][% ELSE %][% -- a comment, variable hostname not provided %][% END %]
如何使上述成语适用于0
有效值的变量?
我希望发生以下情况:
render template.tt
模板呈现:
-- this is a comment, variable enable_networking not provided
为了
render template.tt enable_networking 0
我想
enable_networking = 0
问题在于区分定义的值和错误的值。我尝试在块和语句中都使用-1
(而不是0
) 。DEFAULT
[% IF enable_networking == -1 %]
但是,以下DEFAULT
块
[% DEFAULT enable_networking = -1 %]
将覆盖0
命令行上指定的值。(它看到 aenable_networking
为假并将其设置为 -1)
是否有任何简单的解决方法(可能是一些配置变量?)