哈希的遍历可通过while循环完成,每次循环从哈希变量中取出一对键值。语法如下:
while (( $键名,$键值)=each %哈希变量名){
#对取出的键名值进行操作
}
我们来完成第二个任务,代码如下:
#perl3-4.pl
use strict;
use warnings;
my %zjycity;
my $mycity;
my $cityinfo;
my $name;
my $city;
my $zjycity;
my $citycount;
my $pcount=0;
my @citys,;
open CITY,"<perl3-4.txt";
#从perl3-4.txt文件中读成员的姓名及城市信息
foreach $cityinfo(<CITY>){
($name,$city)=split(' ',$cityinfo);
$zjycity{$city}++;
}
#循环遍历哈希,并找到成员数最多的城市
while (($zjycity,$citycount)=each %zjycity){ #$zjycity为城市名,$citycount为成员数
if ($citycount>$pcount) {
$pcount=$citycount;
$mycity=$zjycity;
}
}
print "最佳聚会地点:$mycity\n" ;
以上代码中,%zjycity为哈希变量,首先从文本文件perl3-4.txt读取数据,并生成城市统计哈希%zjycity,键为城市名,键值为城市的成员数目,然后通过循环遍历哈希变量%zjycity,找到成员数最多的城市,即找到最大键值对应的键名。