⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbis.pm

📁 Perl开发的数据采集工具 基于UNIX
💻 PM
📖 第 1 页 / 共 5 页
字号:
	elsif ($dflag == -1)	{		$DeBug		= 1;		$ErrorRollBack 	= 0;		$ErrorCommit 	= 0;		$ErrorExit 	= 0;		$ErrorDebug 	= 0;		Trace("*Set bebug module to test programme without database!\n");	}	else	{		Trace("Warn: Invalid set debug!\n");	}}############################################################### Function: 	Sort_By_Number# Description: 	popo sort number# Input:#     1.@# Output: 	@# Return:##############################################################sub Sort_By_Number {	my @somelist = @_;	my ($i,$j,$a);	for($i=0; $i < @somelist - 1;$i ++)	{		for ($j=$i+1; $j < @somelist;$j ++)		{			if (@somelist[$i]>@somelist[$j])			{				$a = @somelist[$i];				@somelist[$i] = @somelist[$j];				@somelist[$j] = $a;			}		}			}	return @somelist;}############################################################### Function: 	Set_Database_Type# Description: 	Set_Database_Type# Input:#     1.DATABASE_TYPE# Output: 	Null# Return: 	string##############################################################sub Set_Database_Type {	my $dbase = shift;	if ($dbase =~ /oracle/i)	{		$COOKDB_TYPE = "ORACLE";	}	elsif ($dbase =~ /informix/i)	{		$COOKDB_TYPE = "INFORMIX";	}	else	{		Trace("Err:Not support Database Type:$dbase!\n");	}}############################################################### Function: 	Set_OSSDB_Type# Description: 	Set_OSSDB_Type# Input:#     1.DATABASE_TYPE# Output: 	Null# Return: 	string##############################################################sub Set_OSSDB_Type {	my $dbase = shift;	if ($dbase =~ /informix/i)	{		$OSSDB_TYPE = "INFORMIX";	}}############################################################### Function: 	Init_Qetxt_Files# Description: 	QETXT.INI init all table files - touch# Input:#     1.QETXT.INI	[with path]# Output: 	Null# Return: 	string##############################################################sub Init_Qetxt_Files {	my $qfile = shift;	my ($qetxt_dir,$line,$rfd,$wfd,$parserflag,$qdir,$tabtxt);	if (!(-e $qfile))	{		Trace ("Err:Qetxt $qfile not exist!\n");		return -1;	}	if ($qfile =~ /^\s*(.*)\//)	{		$qdir = $1;	}	else	{		$qdir = ".";			}	$rfd = new FileHandle($qfile) || die "Err:open file $qfile failed!\n";	$parserflag = 0;	while($line = <$rfd>)	{		if ($line =~ /^\s*$/)		{			next;		}		if ($line =~ /^\[Defined\s*Tables\]\s*$/i)		{			$parserflag = 1;			Trace ("\nFind Defined Tables!!\n");			next;		}		elsif ($line =~ /^\[.*\]\s*$/i and $parserflag == 1 )		{			$parserflag = -1;			Trace ("\nDefined Tables END!!\n");			next;		}			if ($parserflag == 0)		{			next;		}		elsif($parserflag == -1)		{			last;		}		if ($line =~ /\#.*/)		{			next;		}		if($line =~ /^(.*)=\w+/)		{			$tabtxt = $qdir."\/".$1;			Trace ("\nTouch file $tabtxt!!\n");			$wfd = new FileHandle(">>".$tabtxt) || die "Err:open file $tabtxt failed!\n";			print $wfd "";			close($wfd);		}	}	close($rfd);	Trace ("\nTouch file End!!\n");		}############################################################### Function: 	Pwd_Encrypt# Description: 	Pwd_Encrypt# Input:#     1.string# Output: 	Null# Return: 	string##############################################################sub GenerateKey {	my $key;	srand();	$key = pack("C8", rand(254)+1,rand(254)+1,		rand(254)+1,rand(254)+1,rand(254)+1,		rand(254)+1,rand(254)+1,rand(254)+1);	return $key;}sub Encode {	my $s = shift;	my $key = shift;	my @sa = unpack("C*", $s);	my @keya = unpack("C*", $key);	my $pwd = "";	my $chone;	my $i;	for($i=0; $i<$#sa+1; $i++){		$chone = $sa[$i];		$chone = ($chone + $keya[$i % ($#keya + 1)]) % 256;		$pwd .= $char2hextab[$chone/16].$char2hextab[$chone%16];	}	return $pwd;}sub Pwd_Encrypt {	my $key;	$key = GenerateKey();	return Encode($key, $prekey).Encode($_[0], $key);}############################################################### Function: 	Pwd_Decrypt# Description: 	Pwd_Decrypt# Input:#     1.string# Output: 	Null# Return: 	string##############################################################sub Decode {	my $s = shift;	my $key = shift;	my @sa = ();	my @keya = unpack("C*", $key);	my $i;	for($i=0; $i<length($s)/2; $i++){		@sa = (@sa, (hex(substr($s, $i*2, 2)) -			$keya[$i % ($#keya + 1)]) % 256);	}	return pack("C*", @sa);}sub Pwd_Decrypt {	my $pklen = length($prekey);	my $part1 = substr($_[0], 0, $pklen*2);	my $part2 = substr($_[0], $pklen*2);		my $key = Decode($part1, $prekey);	return Decode($part2, $key);}############################################################### Function: 	Trim# Description: 	Trim string# Input:#     1.string# Output: 	Null# Return: 	string##############################################################sub Trim {	$_ = @_[0];  	s/^\s+//;	s/\s+$//;	return $_;}############################################################### Function: 	DFtime# Description: 	time compare return day or hour or minute or second# Input:#     1.comp	-- DD => day hh => hour mm => minute ss => second#     2.time1	-- standard format "YYYY-MM-DD hh:mm:ss"#     3.time2	-- standard format "YYYY-MM-DD hh:mm:ss"# Output: 	Null# Return: 	integer##############################################################sub DFtime{	my $comp = shift;	my $time1 = shift;	my $time2 = shift;	my $pattern = "[-:. ]";	my @splite_list= split(/$pattern/, $time1);	my ($syear,$smon,$sday,$shour,$smin,$ssec) = @splite_list;	my $stime1 = timegm($ssec,$smin,$shour,$sday,($smon-1),$syear);	@splite_list= split(/$pattern/, $time2);	($syear,$smon,$sday,$shour,$smin,$ssec) = @splite_list;	my $stime2 = timegm($ssec,$smin,$shour,$sday,($smon-1),$syear);	my $span_sec = $stime1 - $stime2;		if ($comp eq 'ss')	{		return $span_sec;	}	elsif ($comp eq 'mm')	{		return int($span_sec/60);	}	elsif ($comp eq 'hh')	{		return int($span_sec/(60*60));	}	elsif ($comp eq 'DD')	{		return int($span_sec/(60*60*24));	}	else	{		if($DeBug)		{			print "\nErr: Time compare expression($comp) is not anticipant!"		}		return;	}	}############################################################### Function: 	GMtime# Description: 	calculate standard "YYYY-MM-DD hh:mm:ss" time# Input:#     1.TIME	-- standard format (YYYY-MM-DD hh:mm:ss)#     2.cal	-- calculation (Y/M/D/h/m/s)#		   Such as: +1M,1D -10h# Output: 	Null# Return: 	standard format Time "YYYY-MM-DD hh:mm:ss"##############################################################sub GMtime{	my $gtime = shift;	my $cal_format = shift;	my $pattern = "[-:. ]";	my @splite_list= split(/$pattern/, $gtime);	my ($syear,$smon,$sday,$shour,$smin,$ssec) = @splite_list;	my $stime = timegm($ssec,$smin,$shour,$sday,($smon-1),$syear);	my $span = $cal_format;	my (@day);	$span =~ s/[YMDhms]//g;	if ($cal_format =~ /Y/g)	{		$syear = $syear+$span;		if (($syear % 4 == 0 && $syear % 100 != 0) || ( $syear % 400 == 0)) {			@day = (0,31,29,31,30,31,30,31,31,30,31,30,31);		}		else {			@day = (0,31,28,31,30,31,30,31,31,30,31,30,31);		}		if ($sday > @day[$smon])		{			$sday = @day[$smon];		};				$stime = timegm($ssec,$smin,$shour,$sday,$smon - 1,$syear);	}	elsif($cal_format =~ /M/g)	{		if($span <= 0)		{			$smon = $smon + $span;			while ($smon < 1)			{				$smon = $smon + 12;				$syear --;			}		}		else		{			$smon = $smon + $span;			while ($smon > 12)			{				$smon = $smon - 12;				$syear ++;			}				}		if (($syear % 4 == 0 && $syear % 100 != 0) || ( $syear % 400 == 0)) {			@day = (0,31,29,31,30,31,30,31,31,30,31,30,31);		}		else {			@day = (0,31,28,31,30,31,30,31,31,30,31,30,31);		}		if ($sday > @day[$smon])		{			$sday = @day[$smon];		};		$stime = timegm($ssec,$smin,$shour,$sday,$smon - 1,$syear);		}	elsif($cal_format =~ /D/g)	{		$span = $span * 60 * 60 * 24;		$stime = $stime + $span;	}	elsif($cal_format =~ /h/g)	{		$span = $span * 60 * 60;		$stime = $stime + $span;	}	elsif($cal_format =~ /m/g)	{		$span = $span * 60;		$stime = $stime + $span;	}	elsif($cal_format =~ /s/g)	{		$stime = $stime + $span;	}	else	{		return "1970-01-01 00:00:00";	}	($ssec,$smin,$shour,$sday,$smon,$syear) = gmtime($stime);	$smon++;	if ($smon < 10)	{		$smon = '0'.$smon;	}	if ($sday < 10)	{		$sday = '0'.$sday;	}	if ($shour < 10)	{		$shour = '0'.$shour;	}	if ($smin < 10)	{		$smin = '0'.$smin;	}	if ($ssec < 10)	{		$ssec = '0'.$ssec;	}					$gtime = ($syear+1900)."-".$smon."-".$sday." ".$shour.":".$smin.":".$ssec;	return $gtime;}############################################################### Function: 	FMtime# Description: 	Format Time to standard "YYYY-MM-DD hh:mm:ss"# Input:#     1.TIME	-- Not standard format#     2.Format	-- time formation# Output: 	Null# Return: 	standard format Time "YYYY-MM-DD hh:mm:ss"##############################################################sub FMtime{    my $ftime 	= shift;    my $tformat 	= shift;    my $tfmt = $tformat;    my ($syear,$smon,$sday,$shour,$smin,$ssec);        $tfmt =~ s/[Y]+/\(\\d\+\)/;    $tfmt =~ s/[M]+/\\d\+/;    $tfmt =~ s/[D]+/\\d\+/;    $tfmt =~ s/[h]+/\\d\+/;    $tfmt =~ s/[m]+/\\d\+/;    $tfmt =~ s/[s]+/\\d\+/;        if($ftime =~ /$tfmt/)    {    	$syear = $1;    	if(!$syear)    	{    		$syear = '1970';    	}    	elsif(length($syear) == 2)    	{    		if ($syear < 50)    		{    			$syear = '20'.$syear;    		}    		else    		{    			$syear = '19'.$syear;    		}    	}    	    	if(length($syear) != 4)    	{    		$syear = '1970';    	}    }        $tfmt = $tformat;    $tfmt =~ s/[Y]+/\\d\+/;    $tfmt =~ s/[M]+/\(\\d\+\)/;    $tfmt =~ s/[D]+/\\d\+/;    $tfmt =~ s/[h]+/\\d\+/;    $tfmt =~ s/[m]+/\\d\+/;    $tfmt =~ s/[s]+/\\d\+/;        if($ftime =~ /$tfmt/)    {    	$smon = $1;    	if (!$smon)     	{    		$smon = '01';    	}    	elsif(length($smon) == 1)    	{    		$smon = '0'.$smon;    	}    	if(length($smon) != 2)    	{    		$smon = '01';    	}    }   	    $tfmt = $tformat;    $tfmt =~ s/[Y]+/\\d\+/;    $tfmt =~ s/[M]+/\\d\+/;    $tfmt =~ s/[D]+/\(\\d\+\)/;    $tfmt =~ s/[h]+/\\d\+/;    $tfmt =~ s/[m]+/\\d\+/;    $tfmt =~ s/[s]+/\\d\+/;        if($ftime =~ /$tfmt/)    {    	$sday = $1;    	if (!$sday)     	{    		$sday = '01';    	}    	elsif(length($sday) == 1)    	{    		$sday = '0'.$sday;    	}    	if(length($sday) != 2)    	{    		$sday = '01';    	}    }    $tfmt = $tformat;    $tfmt =~ s/[Y]+/\\d\+/;    $tfmt =~ s/[M]+/\\d\+/;    $tfmt =~ s/[D]+/\\d\+/;    $tfmt =~ s/[h]+/\(\\d\+\)/;    $tfmt =~ s/[m]+/\\d\+/;    $tfmt =~ s/[s]+/\\d\+/;        if($ftime =~ /$tfmt/)    {    	$shour = $1;    	if (!$shour)     	{    		$shour = '00';    	}    	elsif(length($shour) == 1)    	{    		$shour = '0'.$shour;    	}    	if(length($shour) != 2)    	{    		$shour = '00';    	}    }        $tfmt = $tformat;    $tfmt =~ s/[Y]+/\\d\+/;    $tfmt =~ s/[M]+/\\d\+/;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -