孤獨者 - 心在黑暗裡旅行 ...... ... 至尊會員
遊蕩的過客 - 枉入紅塵若許年 .. ... - UID
- 18273
- 帖子
- 12122
- 精華
- 1273
- 積分
- 240737
- 金幣
- 492641
- 威望
- 5001
- 推廣
- 0
- 閱讀權限
- 99
- 來自
- 尋覓中
- 註冊時間
- 2006-6-24
- 最後登錄
- 2015-5-27
|
60樓
大 中
小 發表於 2006-10-26 22:00
4.8 範例
身份證檢查程式引用:#! /usr/bin/perl
# Copyright 2003 by OLS3 (ols3@訪客無法瀏覽此圖片或連結,請先 註冊 或 登入會員 。
# 檢查身份證號碼的合法性
# 取得身份證字號
chomp($pno = <STDIN>);
# 分別取得十個字元
for ($i=1;$i<=10;$i++) {
$D[$i]=substr($pno,$i-1,1);
}
# 將第一個字元, 轉成大寫
$firstno=uc($D[1]);
# 每一個英文字母都有其代碼
%FNO=(
"A", 10, "B", 11, "C", 12, "D", 13, "E", 14, "F", 15, "G", 16, "H", 17,
"I", 34, "J", 18, "K", 19, "L", 20, "M", 21, "N", 22, "O", 35, "P", 23,
"Q", 24, "R", 25, "S", 26, "T", 27, "U", 28, "V", 29, "W", 32, "X", 30,
"Y", 31, "Z", 33
);
# $x2= 個位數字
$x2=$FNO{$firstno} % 10;
# $x1= 十位數字
$x1=($FNO{$firstno} - $x2) / 10;
$checkno=$x1 + 9*$x2 + 8*$D[2] + 7*$D[3] + 6*$D[4] + 5*$D[5]
+ 4*$D[6] + 3*$D[7] + 2*$D[8] + $D[9] + $D[10];
if ($checkno % 10) {
print "身份證字號 $pno 不正確!\n";
} else {
print "身份證字號 $pno 正確!\n";
}
上面的範例僅供參考,沒有考慮效率,只作為檢查流程說明之用。
|