?? gifs.cgi
字號(hào):
多功能隨機(jī)抽取號(hào)碼程序(不完整源碼)
演示地址:http://fjpc.net/cgi/gifs.cgi?action=0
摘自 中國(guó)Perl協(xié)會(huì) 用戶推廣組 helper 2006-01-14 16:40
http://perlchina.sun126.com/cgi-bin/ccb/index.cgi
演示地址:http://fjpc.net/cgi/gifs.cgi
歡迎提出改進(jìn)意見。聯(lián)系方式見源碼行內(nèi)。
#!/usr/bin/perl
###################################################################
#名稱:隨機(jī)抽機(jī)號(hào)碼程序gifs.cgi
#作者:邱雄盛
#網(wǎng)址:http://fjpc.net
#郵箱:sunboydavid@hotmail.com
#QQ:2263537
#SkyPe:haoqiu
#時(shí)間:2006-1-13 23:33
###################################################################
use strict;
# Imports
use CGI::Carp qw(fatalsToBrowser);
use UTCGI;
# Get CGI parameters
my $cgi = new UTCGI;
my $startnum=int($cgi->param('startnum'));
my $endnum=int($cgi->param('endnum'));
my $randnum=int($cgi->param('randnum'));
my $action =int($cgi->param('action'));
my $upload = $cgi->param('upload');
my $sort = int($cgi->param('sort'));
my $mode = int($cgi->param('mode'));
my $source = int($cgi->param('source'));
my $intnum = int($cgi->param('intnum'));
my $takenum = int($cgi->param('takenum'));
my $intnum2 = int($cgi->param('intnum2'));
my $takenum2 = int($cgi->param('takenum2'));
print $cgi->header(-charset=>'GB2312',-type=>'text/html',-expires=>'-1h');
#頁(yè)眉,樣式表
my $header= qq~<html><head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>號(hào)碼隨機(jī)程序</title>
<style>
input{font-family: Verdana; font-size: 9pt; font-weight: bold}
</style>
</head>
<body align=center>
~;
#頁(yè)腳,版權(quán)
my $footer=qq~<p align="center"><font color="#FF0000"><span lang="en"><font face="宋體"><span style="font-size: 9pt">?</span></font></span><font face="宋體"><span style="font-size: 9pt">1999-2006 <a href=http://fjpc.net>福建電腦資訊站</a> 作者:<a href=callto:haoqiu>邱雄盛</a></span></font></font></p></body></html>~;
if ($action == 1){
my @numbers=();
#號(hào)碼來(lái)源
#從上傳文件取得
if ($source ==1){
$upload =~ s/\s+/\n/g;
@numbers= split(/\n/,$upload);
chomp @numbers;
}
#從號(hào)碼范圍取得
else{
@numbers=getnum($startnum,$endnum);
}
#抽取方式
#隨機(jī)抽取
if ($mode == 1){
if ($source==0){
$randnum or printMessage ("隨機(jī)抽取個(gè)數(shù)不能是0!\n");
($startnum < $endnum) or printMessage ("結(jié)束號(hào)碼不能小于開始號(hào)碼!\n");
}
#打亂號(hào)碼后隨機(jī)取個(gè)數(shù)
@numbers=brokenum(\@numbers,$randnum);
}
#隔行抽取
elsif($mode == 2){
$intnum or printMessage ("隔行個(gè)數(shù)不能是0!\n");
$takenum or printMessage ("抽取個(gè)數(shù)不能是0!\n");
#隔行抽取
@numbers=internum(\@numbers,$intnum,$takenum);
}
#隨機(jī)并隔行抽取
else{
$intnum2 or printMessage ("隔行個(gè)數(shù)不能是0!\n");
$takenum2 or printMessage ("抽取個(gè)數(shù)不能是0!\n");
#先打亂號(hào)碼再隔行抽取
@numbers=brokenum(\@numbers,undef);
@numbers=internum(\@numbers,$intnum2,$takenum2);
}
#排序方式(詳細(xì)見perldoc -f sort)
#升序
if ($sort == 1){
@numbers = sort {$a <=> $b} @numbers;
}
#降序
elsif($sort == 2){
@numbers = sort {$b <=> $a} @numbers;
}
#不排序不處理
print $header;
print "<p align=center>";
foreach (@numbers){
print $_,"\n";
}
print "</p><p align=center><a href='gifs.cgi?action=0'>返回</a></p>",$footer;
}else{
print $header;
print qq~
<table border="0" id="table1" cellspacing="4" cellpadding="3" align="center" width="400" align=center>
<tr><form method="POST" name="form" action="" enctype="multipart/form-data"><input type="hidden" name="action" value="1">
<td colspan="3" align="center">
<font face="黑體" color="#FF0000">號(hào)碼隨機(jī)程序</font></td>
</tr>
<tr>
<td width="321" colspan="3"> </td>
</tr>
<tr>
<td colspan="3" bgcolor="#000000" align="center"><font face="黑體" color="#FFFFFF">號(hào)碼來(lái)源</font></td>
</tr>
<tr>
<td width="4"> </td>
<td colspan="2"><input type="radio" value="1" name="source"><font face="黑體">從上傳文件獲取</font>(空格符或回車符隔開)</td>
</tr>
<tr>
<td width="4"> </td>
<td colspan="2"><input type="file" name="upload" size="20"></td>
</tr>
<tr>
<td width="4"> </td>
<td colspan="2"><input type="radio" value="0" checked name="source"><font face="黑體">號(hào)碼范圍輸入</font></td>
</tr>
<tr>
<td width="4"> </td>
<td align="right" width="150"><font face="黑體">開始號(hào)碼</font></td>
<td width="190">
<input type="text" name="startnum" size="12"></td>
</tr>
<tr>
<td width="4"> </td>
<td align="right" width="150"><font face="黑體">結(jié)束號(hào)碼</font></td>
<td width="190"><input type="text" name="endnum" size="12"></td>
</tr>
<tr>
<td colspan="3" bgcolor="#000000" align="center"><font face="黑體" color="#FFFFFF">抽取方式</font></td>
</tr>
<tr>
<td width="4"> </td>
<td align="right" width="150"><input type="radio" value="1" name="mode" checked><font face="黑體">隨機(jī)抽取</font></td>
<td width="190"><input type="text" name="randnum" size="4" maxlength="6"><font face="黑體">個(gè)</font></td>
</tr>
<tr>
<td width="4"> </td>
<td align="right" width="150"><input type="radio" value="2" name="mode"><font face="黑體">隔行抽取</font></td>
<td><font face="黑體">隔<input type="text" name="intnum" size="3" maxlength="4">行 抽<input type="text" name="takenum" size="3" maxlength="4">個(gè)</font></td>
</tr>
<tr>
<td width="4"> </td>
<td align="right" width="150"><input type="radio" value="3" name="mode"><font face="黑體">隨機(jī)并隔行抽取</font></td>
<td><font face="黑體">隔<input type="text" name="intnum2" size="3" maxlength="4">行 抽<input type="text" name="takenum2" size="3" maxlength="4">個(gè)</font></td>
</tr>
<tr>
<td colspan="3" bgcolor="#000000" align="center"><font face="黑體" color="#FFFFFF">排序顯示方式</font></td>
</tr>
<tr>
<td width="4"> </td>
<td align="right" width="150"><input type="radio" value="0" name="sort" checked></td>
<td><font face="黑體">打亂顯示</font></td>
</tr>
<tr>
<td width="4"> </td>
<td align="right" width="150"><input type="radio" value="1" name="sort"></td>
<td><font face="黑體">升序顯示</font></td>
</tr>
<tr>
<td width="4"> </td>
<td align="right" width="150"><input type="radio" value="2" name="sort"></td>
<td><font face="黑體">降序顯示</font></td>
</tr>
<tr>
<td colspan="3" align="center"><hr><input type="submit" value=" 確定 " name="B1">
<input type="reset" value=" 取消 " name="B2"></font></td>
</tr>
</form>
</table>
~;
print $footer;
}
#取得全部號(hào)碼
sub getnum{
my ($startnum,$endnum) = @_;
($endnum - $startnum >=3) or printMessage("開始號(hào)碼或結(jié)束號(hào)碼有誤!");
my @numbers=($startnum..$endnum);
return @numbers;
}
#隨機(jī)抽取號(hào)碼
sub brokenum{
my $numbers=shift();
my $randnum=shift();
#初始化隨機(jī)函數(shù)
srand( time() ^ ($$ + ($$ << 15)) );
my @numberstemp = @$numbers;
my @numbers=();
#打亂源
if ($randnum){
my $i=0;
while ($i<$randnum) {
$i=$i+1;
push(@numbers, splice(@numberstemp, rand @numberstemp, 1));
}
}else{
while (@numberstemp) {
push(@numbers, splice(@numberstemp, rand @numberstemp, 1));
}
}
return @numbers;
}
#隔行抽取號(hào)碼
sub internum{
my $numbers=shift();
my $intnum=shift();
my $takenum=shift();
my @numberstemp = @$numbers;
my @numbers=();
my $numbers=scalar(@numberstemp);
my $i=0;
while($i <= $numbers){
$i=$i+$intnum;
for (my $u=0;$u<$takenum;$u++){
push(@numbers,@numberstemp[$i]);
$i=$i+1;
}
}
return @numbers;
}
sub printMessage{
my $message=shift();
print $header,"<p align=center>",$message,"</p><p align=center><a href='gifs.cgi?action=0'>返回</a></p>",$footer;
exit;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -