正確傳回1
錯誤傳回0
my %letterw;
my @w=(10, 11, 12, 13, 14, 15, 16, 17, 34, 18, 19, 20, 21, 22, 35, 23, 24, 25, 26, 27, 28, 29, 32, 30, 31, 33);
my $no;
foreach $ele('A'..'Z'){
$letterw{$ele}= $w[$no];
$no++;
}
sub checkid{
my $id=shift;
my $sum=0;
if(length($id) ne 10){return 0;}
if($id !~ /^\w\d\d\d\d\d\d\d\d\d$/){return 0;}
my $first=substr($id, 0, 1);
$sum= $letterw{$first} / 10 + ($letterw{$first} % 10)*9 +
substr($id, 1, 1) * 8 +
substr($id, 2, 1) * 7 +
substr($id, 3, 1) * 6 +
substr($id, 4, 1) * 5 +
substr($id, 5, 1) * 4 +
substr($id, 6, 1) * 3 +
substr($id, 7, 1) * 2 +
substr($id, 8, 1) * 1 +
substr($id, 9, 1) * 1;
if(($sum % 10)eq 0){return 1;}
return 0;
}
- Jul 06 Tue 2010 13:17
身份證檢測函數
close
全站熱搜
留言列表
禁止留言