perl - 如何使用 for...each 循环重置多个 Perl 散列?

标签 perl

我需要在 mod_perl 脚本中重置一些全局哈希变量。

这有效 - 如所描述的那样这里:https://stackoverflow.com/a/4090870

$_ = '' for ($a, $b, $c);
$_ = 0 for ($d, $e, $f);

这似乎不起作用:

$_ = () for (%a, %b, %c);

为什么它不适用于哈希?可以吗?数组呢?

(我通常会尝试限定变量的范围,所以上面的内容不是必需的,但在这种情况下,恐怕它必须是这样的。另外,我可能缺少对如何 for...each 的一些基本理解循环在 Perl 中工作,请赐教。)

最佳答案

你可以用引用来做:

%$_ = () for (\%a, \%b, \%c);

但这并没有回答您关于为什么没有引用它就不能工作的问题:

当将散列放入您的 for (%h) 语句时,散列在列表上下文中隐式计算。

(编辑:我最初说的是标量上下文,后来意识到它是列表上下文并调整了答案)

关于perl - 如何使用 for...each 循环重置多个 Perl 散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16033479/

相关文章:

perl - Perl 的触发器操作符有问题吗?它具有全局状态,我该如何重置它?

Perl:如何在多个独立脚本之间共享大量模块的导入?

mysql - 试图找出为什么 sub 会导致 mysql 数据库中有 27 个条目

r - 按标题对两个文件进行排序,使它们的字段顺序匹配

perl - CPAN 中是否有一个使用现代 Perl 技术实现基于 REST 的 API 的模块示例?

perl - 使用日期时间搜索日志文件

c - 缓冲区溢出缓冲区长度

perl - 模块 : When should I mention the required Perl version in the documentation?

multithreading - PERL并行多线程

perl - 如果你不输入 1 会发生什么;在包裹的最后?