子程序(subroutine):用户自己创建的,以方便重复调用某段代码。
1. 定义子程序
关键字sub开头,再写上子程序名,然后写上花括号,封闭在其中的代码块就是子程序的主体。
sub count_gene {
}
子程序可以被定义在程序中的任意位置。
2. 调用子程序 &
在任意表达式里,子程序名前加上与号“&”,就表示调用这个子程序:
& count_gene;
3. 返回值
在Perl中,所有子程序都有一个返回值。
子程序执行过程中最后一次运算的结果会被当作返回值,
或是使用return。
4. 参数
要传递参数列表到子程序里,只要在子程序调用的后面加上括在括号内的列表表达式就行。
参数列表会被传入子程序,让子程序随意使用。Perl会自动将参数列表化名为特殊的数组变量@(类似于@ARGV),该变量在子程序执行期间有效。
这表示子程序的第一个参数储存于[1],以此类推。
参数列表总得存进某个数组变量里,好让子程序使用,Perl将这个数组叫做@_。
5. 子程序中的私有变量
Perl默认情况下所有变量都是全局变量。
但可以借助my操作符来创建私有变量,称之为词法变量。
这些变量属于封闭语句块中的私有变量。
6. 变长参数列表(不懂)
- 改进版的&max子程序
- 空参数列表
7. 用my声明的词法变量
词法变量可以用在任何语句块内,不仅限于子程序的语句块。
8. use strict编译指令
use strict 编译指令是要告诉Perl内部的编译器,接下来的代码块或是程序源文件的代码应该严禁遵循优良编程风格。
这样之后,Perl会坚持要求你声明所有新出现的变量,加上my。
一般比整个屏幕长的程序都应该加上use strict。
9. return操作符
return操作符:想在子程序执行到一半时停止运行。
- 省略 于号&:
如果编译器在调用子程序前看到过子程序的定义,或者Perl通过语法规则判断它只能是子程序调用,就可以像内置函数那样省略与号。
但&chomp不能省略&,因此由内置函数chomp。
10. 非标量返回值
子程序不仅可以返回标量值,还可以返回列表值。
网友评论