#文件目录 $dir_name=<D:\\pv\\>; opendir(DIR,$dir_name) || die "Can't open directory $dir_name"; @dots = readdir(DIR); for my $f(@dots){ #当文件名包含.log时 if($f=~/.log/) { #打开文件,并获取相应数据, #.为字符串连接符 open(files,$dir_name.$f); @all = <files>; close files; open(fn,">>pvtest.log"); open(fn1,">>pvtest1.log"); ## 获取1个文件的每一行,分割后获取到第二个数据 for $fns(@all) { # 获取1个文件的每一行,分割后获取到第二个数据 begin @a = split(/\|/,$fns ); $t = @a; $ss = $a[$t-2]; if(!$ss eq "") { print fn "'".$ss."'".",\n"; } # 获取1个文件的每一行,分割后获取到第二个数据 end } ##合并文件 #获取数据数组长度 $count = @all; if($count>0) { print fn1 @all; } close fn; close fn1; } } #数据去重,并保存 open(fn,"pvtest.log"); my %hash; my @array = <fn>; #grep 保存符合条件的元素 @array = grep { ++$hash{$_} < 2 } @array; close fn; open(fn,">pvtest.log"); print fn @array; close fn; closedir DIR;