Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 在模板文件的表达式中使用未初始化变量时出错_Perl_Template Toolkit - Fatal编程技术网

Perl 在模板文件的表达式中使用未初始化变量时出错

Perl 在模板文件的表达式中使用未初始化变量时出错,perl,template-toolkit,Perl,Template Toolkit,我正在尝试使用TemplateToolkitVersion2.29和Perl5.28.1处理模板文件。处理模板文件时,我收到以下警告 参数“”不是第xyz行的数字加法(+) 我认为这是因为在模板文件中,我们有未初始化的变量,这些变量在算术表达式中使用 如果使用模板工具包2.29版,在表达式中使用变量之前是否需要初始化变量? 在以下代码中,第5行出现警告 下面是代码片段 [%- groups = {} -%] <br/> [%- cols = [ 10, 10, 20, 30 ] -%

我正在尝试使用TemplateToolkitVersion2.29和Perl5.28.1处理模板文件。处理模板文件时,我收到以下警告
参数“”不是第xyz行的数字加法(+)
我认为这是因为在模板文件中,我们有未初始化的变量,这些变量在算术表达式中使用
如果使用模板工具包2.29版,在表达式中使用变量之前是否需要初始化变量? 在以下代码中,第5行出现警告

下面是代码片段

[%- groups = {} -%] <br/>
[%- cols = [ 10, 10, 20, 30 ] -%] <br/>
[%- FOREACH c IN cols -%] <br/>
   [%- val = c -%] <br/>
   [%- groups.$val = groups.$val + 1 -%] <br/>
[%- END -%] <br/>
[%-groups={}-%]
[%-cols=[10,10,20,30]-%]
[%-FOREACH c IN cols-%]
[%-val=c-%]
[%-组。$val=组。$val+1-%]
[%-END-%]
如果在表达式中使用$val之前初始化
组,则不会出现警告
我在使用模板工具包2.15版时没有遇到问题。
不确定2.29(或大于2.15的任何其他版本)中的哪些更改导致了警告?

这不是错误,而是警告

如果不想得到警告,只需在分配给变量时填充该变量:

[%- groups.$val = (groups.$val || 0) + 1 -%]
或许

[%- groups.$val = (groups.$val.defined ? groups.$val : 0) + 1 -%]

不幸的是,没有任何类似于Perl的
++
+=
的操作符会像Perl的操作符那样跳过警告。

如果您使用的是
-w
,您可以尝试使用
使用警告取而代之。可能不会有什么不同。谢谢@choroba。我想知道在2.15版和2.29版之间发生了什么变化,这个警告开始出现了。我在使用2.15版的模板工具包时没有看到任何警告。我没有在。。。