【发布时间】:2015-04-17 12:00:24
【问题描述】:
我想使用this 方法从数组中删除重复值。重复删除必须在循环内执行。 这是一个演示我遇到的问题的最小示例:
use strict;
for (0..1){
my %seen;
sub testUnique{
return !$seen{shift}++;
}
my $res = testUnique(1);
if($res){
print "unique\n";
}else{
print "non-unique\n";
}
}
我在循环中定义了%seen 哈希,因此我希望它仅在循环的单次迭代中定义。
然而,上面代码的结果是:
unique
non-unique
通过一些调试打印,我发现%seen 的值在一次迭代中保留了下来。
我尝试了一个微不足道的
for (0..1){
my %seen;
$seen{1}++;
print "$seen{1}\n";
}
而且这个按预期工作。它打印:
1
1
所以,我想问题出在内部函数testUnique 上。
有人可以解释一下这里发生了什么吗?
【问题讨论】: