7. 副程式

我們經常把若干程式碼集合在一起,以完成特定的功能,並且予以命名,俾供重覆叫用。像這樣的區塊,我們稱為副程式或函式。

7.1 副程式的寫法

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;

}

叫用上述副程式的方法:


# 傳入一個身份證字號,並用 $rt 接取傳回值
$rt = check_pslno("R121212121");