当你需要在哈希表中的每一个键值都存储多个数值,你可以选择在其中存储一个数组而不仅仅是一个变量值。
如果你存储的数据是对应于同一个键值的文本,显而易见,哈希是最好的选择。在哈希的每一个元素中,你只能存储一个变量值。但是使用数组指针就可以使得在哈希的一个元素中存储一个数组指针,指向一个数组。
例如,考虑一下存储那些关联到城市的邮政编码。因为一个城市可以有多个邮政编码,你就需要考虑设计一个数组指针,用于将指针存储到哈希表中去。看看下面这个例子:
{
chomp;
($zip, $state, $city) = split / /;
push @{$zipcodes{"$city, $state"}}, $zip;
}
for $city (sort keys %zipcodes)
{
print "$city: @} "
}
__DATA__
40502 KY
40503 KY
40504 KY
40505 KY
40511 KY
40513 KY
40514 KY
40515 KY
40516 KY
40517 KY
40202 KY
40213 KY
40214 KY
40215 KY
40217 KY
40220 KY
40222 KY LYNDON
40241 KY LYNDON
40242 KY LYNDON
如果总是存储一些数组指针,而且只有一个元素,你可以简化代码段。否则,你需要测试哈希的元素,看看这个元素究竟是一个数组指针还是一个简单的变量,这样才能正确地进行操作。
在一个单独的哈希元素中采用使用数组指针来存储多值的方法。