编辑代码

$cutover_time = 20140511195000;
$start_time = 20201019154017;
#$start_time = 18739367101;
$user_number = 18739367101;
$instance_number = 10;
$chk_time = substr($start_time,0,11);
$dr_type = 8305;
$dbname_prefix = ChkdupLTE;
@val5 = ("18739367101","18739367101","123456","789123","456789");


$n = &hashcode($user_number);
$m = abs(&hashcode($user_number)) % $instance_number;

# (LTE & GPRS) DB & TBL name prefix
%db_name_hash = ('8305' => 'DupChkLTE','8303' => 'DupChkGPRS');
%tb_name_hash = ('8305' => 'lte',      '8303' => 'gprs');

# Get DB and TBL name prefix
$dbname_prefix = ( $dr_type && defined($db_name_hash{"$dr_type"})) ? $db_name_hash{"$dr_type"} : 0;
$table_prefix  = ( $dr_type && defined($tb_name_hash{"$dr_type"})) ? $tb_name_hash{"$dr_type"} : 0;

$tn = "$dbname_prefix$m.$table_prefix$chk_time";

$cutover_code = '
    $m = abs(&hashcode($XDR[18])) % 5;
    $tn = "ChkdupLTE$m.$table_prefix$chk_time";
';

sub BiJiao
{
    $start_time >= $cutover_time && return($tn,$chk_key);
    eval $cutover_code;
    print('ERROR', "\nuser_number:$val5[0]\n", "start_time:$val5[1]\n", "charging_id:$val5[2]\n", "ggsn_address:$val5[3]\n", "rec_seq_no:$val5[4]\n", );
    return($tn,$chk_key);
}

sub hashcode
{
    my ($s) = @_;
    my $h = 0;
    foreach my $c (unpack("C*",$s))
    {
         $h = unpack("i",pack("i",($c+unpack("i",pack("i", $h*31)))));
    }
    return($h);
}

#print ("n = $n"."\n"."m = $m"."\n"."tn = $tn")


print (BiJiao)