PERL语言的子程序

子程序的定义可以使用关键字 sub 子程序名(不包含&),以及经过缩进的花括号

$n=1;

&marine;

&marine;

&marine;

sub marine{
    
    print "Hello $n\n";
    $n+=1;
    }

子程序可以在程序的任意位置,如果提前使用在后定义的话,也不用事先声明,只是子函数只能是定义,经过调用后才会执行,不会自动执行

注:

子程序的定义是全局的,不存在私有子程序的说法,如果定义了重名的子程序,那么后面的额子程序会覆盖掉前面的子程序,一般现在见过的所有变量都是全局变量

子程序的返回值:

PERL子程序都是具有返回值的,其返回值就是最后一次运算的结果

$tmp=&marine;
print $tmp;
sub marine{
    $n+=1;
    print "Hello $n\n";#print语句返回的是1,表示输出成功
    }

$tmp输出的结果是1

$tmp=&marine;

print $tmp;

sub marine{

    print "Hello $n\n";

    $n+=1;

    }#这样的结果则是2

另外最后执行的表达式与代码中的最后一行并不相同

$m=4;
$n=6;
$result=&la_or_le;
print $result;
sub la_or_le{
if($m>$n)
{
    $m;
}
else
{
    $n;
}
    
}

PERL子程序,可以有参数,传递参数列传递到子程序中去,只要在子程序调用的后面加上括号即可

PERL自动将参数列表化为名称是@_的特殊的数组变量,该变量在子程序执行期间有效

$result=&la_or_le(1,2);
print $result;
sub la_or_le{
if(@_[0]<@_[1])    
{
    @_[1];
}
else
{
    @_[0];
}
}

我们可以看到这里面只用到了参数的前两个如果是&la_or_le(1,2,3);的话呢?也没关系,第三个参数就自动忽略了

同样,如果用到的参数超出了@_的边界的话,就会是undef

对于如果已有了全局变量@_。则该变量在子程序调用之前会先被保存起来,并且在子程序返回时恢复原本的值即使程序自己递归调用自己也是这样,不会影响到本次执行过程

中的@_变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值