欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

神奇的perl-第六个任务(12)

程序员文章站 2022-05-09 15:57:16
...

本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载

5.1以城市为单位进行统计
我们以perl4-13.pl脚本为基础,以城市为单位进行统计,perl4-13.pl输出结果过于详细,出现了“广东省广州市海珠区”等含行政区的IP来源地区,使用正则替换将行政区从来源地区字符串中移除。
   my $area=getiparea($ip);#getiparea为取得IP对应的来源地区子程序。
   my $qu=decode('utf8','区');
   my $shi=decode('utf8','市');  
   $area=~s/(.+)$shi(.+)$qu/$1$shi/;#去除来源地区$area中的行政区
部分代码如下:
#输出统计结果

<!--StartFragment-->

sub areaanlysis{

#对地区进行统计,结果放在%iphash中,键是城市,值是次数。

#map将地区字符串元素放入$_中。

   my $line=$_;

   if ($line=~m/$ipm/){

   my $area=getiparea($1);

   my $qu=decode('utf8','区');

   my $shi=decode('utf8','市');  

   $area=~s/(.+)$shi(.+)$qu/$1$shi/;

   my $title=decode('utf8','正在处理地区数据:');

   print $title.$area."\n"; 

   $iphash{$area}++;

   }     

}


open MYIP,"<$fn";
map &areaanlysis,<MYIP>;
map {print $_.'==>'.$iphash{$_}."\n"} keys %iphash;
close MYIP;
#输出“四川省成都市==>3”等统计信息

#<!--StartFragment--> getiparea子程序得到IP来源地区,唯一的参数是要查询的IP地址

相关标签: Perl 脚本