生成搜索query

前端之家收集整理的这篇文章主要介绍了生成搜索query前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

#!/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];
}

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

猜你在找的Perl相关文章