清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
#!/usr/bin/perl -w use strict; #==声明变量============================================================ my $fieldList; #字段列表 my $queryFile; #query文件 my $field; #字段变量 my @arr; my $arr; my $index; my $queryStr = ""; my $queryCount; my $l = 1; my $area; #==逻辑处理=========================================================== if(@ARGV < 3) { print "Execute error!\n"; print "Usage: ./queryGen.pl fieldList queryCount\n"; exit(1); } else { $fieldList = $ARGV[1]; $queryCount = $ARGV[2]; $area = $ARGV[0]; $queryFile = "$fieldList.query"; open(FILEOUT, ">>$queryFile") || die "can't creat the file:$!\n"; while($l <= $queryCount) { open(FILEIN, "<$fieldList" ) || die "can't open the file:$!\n"; while($field = <FILEIN>) { chomp($field); @arr = split(/:/, $field); if($arr[1] eq 'v') { $queryStr = $queryStr."&$arr[0]=$arr[2]"; } elsif($arr[1] eq 'a') { my @valarr = split(/,/, $arr[2]); my $val = &getRandItem(@valarr); $queryStr = $queryStr."&$arr[0]=$val"; } elsif($arr[1] eq 'f') { my $fileLineNum = &countFileLine($arr[2]); #chomp($fileLineNum); #print "The line number is $fileLineNum\n"; my $fileLine = int(rand($fileLineNum)) + 1; chomp($fileLine); #print "The rand line is $fileLine\n"; my $fileItem = `sed -n '$fileLine''p' $arr[2]`; chomp($fileItem); #print "File item is $fileItem\n"; $queryStr = $queryStr."&$arr[0]=$fileItem"; } } $queryStr = substr($queryStr, 1); print FILEOUT "bin/search?$area?$queryStr"; $queryStr = ""; close(FILEIN); $l++; print FILEOUT "\n"; } close(FILEOUT); } #====================================================== sub countFileLine { my $line = 0; my($path) = @_; open(FD, $path); while(<FD>) { $line++; } return $line; } #生成不定长度的随机数 sub getRandNum { my $maxLenth; my @a; my @c; my $count; my $password; #随机串的内容 @c=(1..2); #生成随机串 $count = join '', map { $c[int rand @c] } 0..(0); #0..(0)限制随机串的长度 #第一个随机串作为下一个随机串的长度 $maxLenth=$count; #第二个随机串的内容 @a=(1..9); #生成最终的随机串 $password = join '', map { $a[int rand @a] } 0..($maxLenth-1); #返回字串 return $password; } #从数组中随机取字符或字串 sub getRandStr { #字串的内容 my @a = ("Y","N"); #字串的随机位置 my @c = (0..1); my $i = join '', map { $c[int rand @c] } 0..(0); #根据随机位置取随机字符 return $a[$i]; } #从任意数组中随机取item sub getRandItem { my @array = @_; my $count = scalar(@array) - 1; #my $i = join '', map { $c[int rand @c] } 0..(0); my $r = int(rand($count)); return $array[$r]; }