📄 dbis.pm
字号:
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 + -