定义子程序:
要定义自己的子程序,可使用关键字sub,子程序名(不包含与号)以及用花括号封闭起的代码块,例如:
1 sub marine{ 2 $n +=1; #全局变量 $n 3 Print “Hello,sailor number $n n”; 4 }
子程序不需要事先声明
子程序的定义是全局的,不存在私有子程序
假如定义两个重名的子程序,后面的子程序会覆盖掉前面的那个
调用子程序
1 &marine;
返回值
子程序中最后一次运算的结果都会被自动当成子程序的返回值
参数
要传递参数列表到子程序里,只要在子程序调用的后面加上被括号圈引的列表表达式就行了,例如:
1 $n = &max(10,15);
子程序中的私有变量
默认情况,perl里面所有的变量都是全局变量,可以借助my操作符来创建私有变量,我们称之为词法变量
1 sub max{ 2 my($m,$n); #该语句块中的新私有变量 3 ($m,$n) = @_; #将参数赋值给变量 4 If($m>$n){$m}else{$n} 5 }
改进的&max子程序
1 $maxinum=$max(3,5,10,4,6); 2 Sub max{ 3 my ($max_so_far) = shift @_; #数组中的第一个值,暂时把它当成最大值 4 foreach(@_){ # 遍历数组@_中的其他元素 5 if($_>$max_so_far){ # 当前元素比$max_so_far更大吗 6 $max_so_far = $_; 7 } 8 } 9 $max_so_far; 10 }
use strict编译指令
更严谨的代码和编译风格
return操作符
立即停止执行子程序并返回某个值