Perl多进程处理Web日志
发布时间:2020-12-16 00:01:51 所属栏目:大数据 来源:网络整理
导读:不多说了,这个脚本是我刚学得时候写的。。 #!/usr/bin/perluse 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";
不多说了,这个脚本是我刚学得时候写的。。 #!/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*"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |