sub 副程式名稱 {
程式區塊;
}
例:身份證字號檢查副程式
sub check_pslno {
# Copyright 2003 by OLS3 (ols3@www.tnc.edu.tw)
# 檢查身份證號碼的合法性
# 取得身份證字號
$pno = $_[0];
# 分別取得十個字元
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];
($checkno % 10) ? 0 : 1;
}
|