【发布时间】:2011-04-18 03:41:20
【问题描述】:
我想完全重置我的%hash,使其完全不包含键或值。我更喜欢使用单线而不是必须使用循环。
到目前为止我已经尝试过:
%hash = 0;
%hash = undef;
但是这些都在启用警告的严格模式下抛出错误,所以我写了一个简单的 for 循环来实现同样的事情:
for (keys %hash) {
delete $hash{$_};
}
这行得通,但我真的很想用单线来做到这一点。有没有办法简单地重置我忽略的哈希?
【问题讨论】:
-
我很惊讶没有人已经提出过这个问题。 AFAICR 我从来不需要重置哈希,因为使用 Perl 可以有非常紧凑的范围。相反,我让变量简单地超出范围;如果在循环中,将在顶部附近使用
my创建一个新词法。 – 我认为这是一个 XY 问题,有算法改进的空间,或许可以提供更多上下文? -
哈希是一个全局的,我在所有检查和平衡之后在我的程序开始附近创建。它使用不同的子程序进行修改,直到我将最终版本分配到一个数组中。鉴于这个流程,除非我遗漏了什么,否则我相信在将它分配给数组之后“重置”这个特定的哈希比使用
my语句重新创建它更容易。 (我可能忽略了一个 XY 问题,因为我不知道如何执行重置哈希之类的操作)