[b]事例1[/b]
[b]事例2[/b]
发现foreach出来一个hash的key,此key的遍历其实是原hash的key的copy,如果想减少遍历,需要使用事例2的方法,在每次新遍历开始时,测试hash是否有此key的数据
my %hash=(
'1-a' => 'a',
'2-b' => 'b',
'3-c' => 'c',
'4-d' => 'd',
'5-e' => 'e');
foreach my $key(keys %hash)
{
print $key."\n";
foreach my $dkey(keys %hash)
{
delete $hash{$dkey};
}
}
[b]事例2[/b]
my %hash=(
'1-a' => 'a',
'2-b' => 'b',
'3-c' => 'c',
'4-d' => 'd',
'5-e' => 'e');
foreach my $key(keys %hash)
{
print $key."\n" if ($hash{$key});
foreach my $dkey(keys %hash)
{
delete $hash{$dkey};
}
}
发现foreach出来一个hash的key,此key的遍历其实是原hash的key的copy,如果想减少遍历,需要使用事例2的方法,在每次新遍历开始时,测试hash是否有此key的数据