Perl 子程序也就是用户定义的函数。
Perl 子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读。
Perl 子程序可以出现在程序的任何地方,语法格式如下:
sub subroutine{
statements;
}
调用子程序语法格式:
subroutine( 参数列表 );
在 Perl 5.0 以下版本调用子程序方法如下:
subroutine( 参数列表 );
在新版本上,虽然也支持该调用方法,但不推荐使用。
接下来我们来看一个简单是实例:
实例
#!/usr/bin/perl # 函数定义 subHello{ print"Hello, World!n"; } # 函数调用 Hello();执行以上程序,输出结果为:
Hello, World!
向子程序传递参数
Perl 子程序可以和其他编程一样接受多个参数,子程序参数使用特殊数组 @_ 标明。
因此子程序第一个参数为 $_[0], 第二个参数为 $_[1], 以此类推。
不论参数是标量型还是数组型的,用户把参数传给子程序时,perl默认按引用的方式调用它们。
实例
#!/usr/bin/perl # 定义求平均值函数 subAverage{ # 获取所有传入的参数 $n= scalar(@_); $sum= 0; foreach$item(@_){ $sum+= $item; } $average= $sum/$n; print '传入的参数为 : ',"@_n"; # 打印整个数组 print "第一个参数值为 : $_[0]n"; # 打印第一个参数 print "传入参数的平均值为 : $averagen"; # 打印平均值 } # 调用函数 Average(10, 20, 30);执行以上程序,输出结果为:
传入的参数为 : 10 20 30 第一个参数值为 : 10 传入参数的平均值为 : 20
用户可以通过改变 @_ 数组中的值来改变相应实际参数的值。
向子程序传递列表
由于 @_ 变量是一个数组,所以它可以向子程序中传递列表。
但如果我们需要传入标量和数组参数时,需要把列表放在最后一个参数上,如下所示: