Perl 子程序(函数)

Perl教程 2025-08-02

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

用户可以通过改变 @_ 数组中的值来改变相应实际参数的值。

向子程序传递列表

由于 @_ 变量是一个数组,所以它可以向子程序中传递列表。

但如果我们需要传入标量和数组参数时,需要把列表放在最后一个参数上,如下所示:

实例

#!/usr/bin/perl # 定义函数 subPrintList{ my@list= @_; print"列表为 : @listn"; } $a= 10; @b= (1, 2, 3, 4); # 列表参数 PrintList($a, @b);