Perl多进程处理Web日志

不多说了,这个脚本是我刚学得时候写的。。

#!/usr/bin/perl
use Getopt::Std;
use vars qw( $opt_t $opt_l $opt_n $opt_p);
use Parallel::ForkManager;

print "-----------------------------------------\n";
print "|                                       |\n";
print "|      Poject  of   Log-grep            |\n";
print "|                                       |\n";
print "|    help: log-grep.pl -t 线程          |\n";
print "|          -l 行数 -n 名称 -p 路径      |\n";
print "-----------------------------------------\n";


getopts('t:l:n:p:');
#把文件切割N份同步执行。
system "split -l $opt_l $opt_p $opt_n";
my $pm=new Parallel::ForkManager($opt_t);
my $dir=".";
my $file;
my @dir;
opendir (DIR,$dir) or die "Can't open the directory!";
$i=0;
@dir=readdir DIR;
foreach $file (@dir){
  if($file=~/$opt_n/){
     $i++;
     $pm->start and next;
     print "创建第$i个线程\n";
     open IN,'<',$file;
  while(<IN>){
     @oldlist=split(/\s/);
     $Date=$oldlist[3];
     #把特殊符号去掉
     $Date=~s/\[//;
     #切割日期
     @home_date=split(/:/,$Date);
     #home_date[0] 就是准确的年月日
     #time就是小时/分钟/秒
     $time="$home_date[1]:$home_date[2]:$home_date[3]";
     #获取访问动作 
     $Option=$oldlist[5];
     #对特殊符号进行替换
     $Option=~s/"//;
     #获取访问协议
     $Agree=$oldlist[7];
     #对特殊符号进行替换
     $Agree=~s/"//;
     #获取客户端访问类型
     $client=$oldlist[11];
     #对特殊符号进行全局替换
     $client=~s/"//g;
     push(@check,$oldlist[0]);
     push(@check,$home_date[0]);
     push(@check,$time);
     push(@check,$Option);
     push(@check,$oldlist[6]);
     push(@check,$Agree);
     push(@check,$oldlist[8]);
     push(@check,$client);
     open OUT,'>>','./out.text';
     print OUT "IP地址:$check[0] 日期:$check[1] 时间:$check[2] 动作:$check[3] 路径:$check[4] 协议:$check[5] 响应:$check[6] 客户端:$check[7]\n";
  }
  close OUT;
  close IN;
  $pm->finish;
  }
}
system "rm -rf $opt_n*";

 

转载于:https://www.cnblogs.com/xiaoCon/archive/2013/02/26/2934319.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值