我在使用模板工具包时遇到了奇怪的行为,比如说我有一个数据结构(在 perl 中定义并作为参数传递):
( { FLAG => 1, some => data}, { some => data}, etc )
在模板中我有一个循环
[FOR ITEMS]
[IF (FLAG) ]
do something
[ELSE]
do something else
[END]
[END]
模板似乎永远不会进入 else,我可以让它进入 else 的唯一方法是更改数据:
( { FLAG => 1, some => data}, { FLAG => 0, some => data}, etc )
使其评估为假。但是,如果我然后将数据结构更改为
( { some => data}, { some => data}, etc )
它总是进入 else (因为它评估 undef 为假)。
除非它们被覆盖,否则似乎有一些变量“溢出”保留在下一次迭代的范围内,这是预期的行为吗?如果是这样,它是否记录在任何地方?
编辑:后来我发现这是导致上述行为的另一个问题,这是由于我在模板的其他地方使用了“ELSEIF”而不是正确的“ELSIF”。如果有疑问,请查看 jira 提出的解决方案,它解决了我在原始帖子中描述的问题。