我需要在mod_perl脚本中重置一些全局哈希变量.
这有效 – 如上所述.这里:https://stackoverflow.com/a/4090870
$_ = '' for ($a,$b,$c); $_ = 0 for ($d,$e,$f);
这似乎不起作用:
$_ = () for (%a,%b,%c);
为什么它不适用于哈希?可以吗?数组怎么样?
(我通常会尝试对变量进行范围调整,因此上面的内容不是必需的,但在这种情况下,我担心它必须是这样的.另外,我可能会遗漏一些基本的理解…每个循环如何工作Perl,请赐教.)
解决方法
你可以用引用来做到这一点:
%$_ = () for (\%a,\%b,\%c);
但这并没有回答你的问题,为什么没有引用它不起作用:
将哈希值放入for(%h)-statement时,哈希值会在列表上下文中隐式计算.
(编辑:我最初说的是标量上下文,后来实现了列表上下文并调整了答案)