因此,我将数组引用传递给函数以清除某些数组元素:
代码如下:
if($notes->[$x] !~ /[^CF]/)
{
print "$notes->[$x]\n";
splice (@{$notes}), $x, 1;
}
Run Code Online (Sandbox Code Playgroud)
如果注释掉拼接线,则循环可以很好地显示数组的每个$ x元素。但是,如果我不注释掉拼接注释,那么一切都会失败。它不会打印出$ x元素,也不会执行splice命令。
在/var/www/cgi-bin/Funx.pm第130行的模式匹配(m //)中使用未初始化的值。
在/var/www/cgi-bin/Funx.pm第132行的串联(。)或字符串中使用未初始化的值。
完全不确定这里发生了什么。我可以理解我的接合线不是正确的语法。但是我为什么不影响它上面的线。
任何见识将不胜感激。
首先
splice(@{$notes}), $x, 1;
Run Code Online (Sandbox Code Playgroud)
应该
splice(@{$notes}, $x, 1);
Run Code Online (Sandbox Code Playgroud)
那不是您问的错误,而是您显示的唯一错误。
导致您确实获得错误消息的错误可能是不正确的循环。我相信您正在使用一些类似的方法
for (@$notes)
Run Code Online (Sandbox Code Playgroud)
要么
for (0..$#$notes)
Run Code Online (Sandbox Code Playgroud)
第一种是越野车,因为不允许您在要迭代的数组中添加或删除元素。
第二个是bug,因为它执行循环主体的次数与数组最初具有元素的次数相同,因此您最终将循环过多次。
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |