Perl子程序

声明方式

sub function{
    $n += 1;
    my $m = $n;
}

子程序里默认使用的是全局变量,也可以用my定义私有变量。

调用方式

&function(parameter1,parameter2);

function(parameter1,parameter2);省略&

function parameter1,parameter2;省略()

当子程序名与Perl内置函数重名时,必须带上&号调用,否则,Perl只会调用内置函数。

返回值

Larry觉得显式return过于麻烦,采用最后一次运算的结果作为返回值。因此一定要特别注意,确保最后执行的表达式是你要的返回值。返回值可以是标量,也可以是列表。

参数

Perl会自动将参数列表化名为特殊的数组变量@,第一个参数存在\$[0]中,以此类推,注意,这些变量与\$ 没有任何关系,跟Perl的一贯特性相同,\$fred[3]与 $fred毫无关系。如果在标量上下文中使用@,得到的是参数的个数。

子程序私有变量

借助词法变量(my)声明函数的私有变量。几乎所有的子程序都会以下面的程序代码作为开头。

sub max{
    my ($m,$n) = @_;
    if($m > $n){
        $m;
        }else{
        $n;
            }   
    }

sub max{
    my $max_so_far = shift @_;
    if($_ >$max_so_far){
        $max_so_far = $_;
        }
        $max_so_far;    
    }

use strict关键字

强制使用一些严格的,良好的编程风格。 比如,Perl会坚持要求你声明所有新出现的变量,也就是加上my。总之使用use strict是一个好习惯。

return语句

立刻返回某个值,并终止程序。

持久性私有变量。

如果你希望变量的值在每次子程序调用之后保持当前的值,使用state关键字来声明它,而不是用my.

sub marine{
    state $n = 0;
    $n += 1;
    }

Comments !