- 论坛徽章:
- 0
|
本帖最后由 莫莫小米 于 2015-07-30 15:33 编辑
在log.txt中匹配regex.txt中第一列的行,并把中间的字符(\w)作为%hash的 key ,log.txt中匹配的行作为 value- use strict;
- open(MYFILE,"E:/log.txt") or die("Can't open log.txt");
- open(OUTFILE,">E:/result.txt") or die("Can't open result.txt");
- open(REGEX,"E:/regex.txt") or die("Can't open regex.txt");
- my %hash;
- my @a = <REGEX>;
- while (my $log = <MYFILE>){
- foreach my $a (@a) {
- my @line = split/ /,$a;
- my $regex = $line[0];
- my $w = $1;
- if ($log =~ /$regex/) {
- $hash{$w} = $log;
- }
- }
- }
复制代码 我调试发现执行if语句时陷入死循环,这是为什么呢?
regex.txt的部分内容为:- qw(\w)qw $1
- qe(\w)qe $2
- re(\w)re $3
- te(\w)te $4
- qa(\w)qa $5
- we(\w)we $6
复制代码 错了,if语句不是死循环,是没有执行,是因为regex.txt写错了还是什么原因? |
|