Perl的hash支持包括三个迭代器函数(iterator functions):each,key,以及values。这些函数贯穿在一个hash的操作中,并根据使用的函数返回合适的信息。
Each函数返回一个具有两个元素的列表,列表包含使用key和value,或者,在等级内容中,这一函数只返回key。当each为hash的末端时,它返回的是一个空的列表。
key函数返回一个列表,列表包含给定hash的所有关键词(keys)。这些关键词是以明显的随机顺序而返回。当key函数用于等级内容时,其返回的是hash中的元素个数。
Values函数返回的是给定hash的所有values的列表,列表元素实际上是数值的化名,所以,列表的任一更改都会改变hash的实际内容。
以下是这三个迭代器函数的使用范例:
# 改变hash元素的values
for (values %prices)
{
$_ *= 1.10; # 以10%提高每一价格
}
#以关键的value分类一个hash (默认环境的 hash)
for $key (sort keys %ENV)
{
print "$key $ENV
";
}
# 获得hash的所有元素
while (($key, $value) = each %hash)
{
print "$key => $value
";
}
由于key和values函数返回的是一个列表,当hash与数据库关联时,它们有可能返回庞大的列表。在这样的情况下,each函数是一个更好的选择,因为它在某一时刻只能返回一个key/value对。