作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想完全重置%hash
,使其完全不包含键或值。我更喜欢使用单线而不是使用循环。
到目前为止,我已经尝试过:
%hash = 0;
%hash = undef;
for (keys %hash) {
delete $hash{$_};
}
最佳答案
%hash = ();
和undef %hash;
都可以工作,区别在于后者将回馈一些内存以用于其他用途。前者将把以前使用过的哈希中的东西保留在内存中,假设当哈希被重新填充时,无论如何稍后将再次使用它。
您可以使用Devel::Peek
观察该行为:
$ perl -MDevel::Peek -we'my %foo = (0 .. 99); %foo = (); Dump \%foo; undef %foo; Dump \%foo'
SV = IV(0x23b18e8) at 0x23b18f0
REFCNT = 1
FLAGS = (TEMP,ROK)
RV = 0x23acd28
SV = PVHV(0x23890b0) at 0x23acd28
REFCNT = 2
FLAGS = (PADMY,SHAREKEYS)
ARRAY = 0x23b5d38
KEYS = 0
FILL = 0
MAX = 63
RITER = -1
EITER = 0x0
SV = IV(0x23b18e8) at 0x23b18f0
REFCNT = 1
FLAGS = (TEMP,ROK)
RV = 0x23acd28
SV = PVHV(0x23890b0) at 0x23acd28
REFCNT = 2
FLAGS = (PADMY,SHAREKEYS)
ARRAY = 0x0
KEYS = 0
FILL = 0
MAX = 7
RITER = -1
EITER = 0x0
MAX
中的
PVHV
字段是重要的位。
关于perl - 如何在不使用for循环的情况下完全重置哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3810524/
我是一名优秀的程序员,十分优秀!