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

本文介绍了一个使用Perl编写的IP统计脚本,该脚本能以城市为单位进行统计,并通过正则表达式去除来源地区的行政区划信息,实现更精确的数据统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本神奇的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地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值