【求助】为什么eval 正则会溢出?
时间:2011-07-11
来源:互联网
新手问题
复制代码
请问foreach这段为什么总是溢出呢? 其中%ha 存放的类似于 a => /a/&&/b/ b=> /b/的正则 %hc 存放的类似于 a => b c d 的分类,先对大类检索,然后再逐一检索小类。
- while (<IN>){
- chomp;
- my ($host,$date,$url_with_method,$status,$size,$referrer,$agent) = m/^(\S+) - - \[(\S+ [\-|\+]\d{4})\] "(\S+ \S+ [^"]+)" (\d{3}) (\d+|-) "(.*?)" "([^"]+)"$/;
- my ($user,$uvid,$yid)=("","","");
- if (/user=(.*?)&&/){
- $user=$1;
- }
- if(/uvid=(.*?)&&/){
- $uvid=$1;
- }
- if(/yid=(.*?)&&/){
- $yid=$1;
- }
- $op="";
- $opn="";
- @opt=();
- @optn=();
- foreach my $k (keys %$hc) {
- if (exists $ha->{$k}){
- if (eval($ha->{$k})){
- if ($vb==1){print "$k $ha->{$k} matched \n";}
- push @opt,$k;
- push @optn,exists $ht->{$k}? $ht->{$k}:"";;
- if (ref($hc->{$k}) eq 'ARRAY'){
- my @ar = @{$hc->{$k}};
- foreach my $m (@ar){
- if($vb==1){print "m ---->".$m."\n";}
- if (exists $ha->{$m}){
- if(eval($ha->{$m})){
- push @opt,$m;
- push @optn,exists $ht->{$m}? $ht->{$m}:"";
- next;
- }
- }
- }
- }
- last;
- }
- }
- }
- ...
- }
作者: windrlee 发布时间: 2011-07-11
希望给出能重现问题的代码和数据,还有说清晰错误的内容
作者: zhlong8 发布时间: 2011-07-11
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28