perl子程序详解

定义子程序:使用关键字sub,例如
    sub marine{
        $n+=1;
        print "Hello,sailor number $n!\n";
    }
子程序可以定义在程序的任意位置,如果定义了两个重名的子程序,后面的会覆盖掉前面的
可以在子程序中使用任何全局变量
调用子程序:可以在任意表达式中使用子程序名(前面加上&)来调用,如&marine;
返回值:最后一次运算的结果(不管是什么),都会被自动当成子程序的返回值
    print语句的返回值是1,代表输入成功
参数:要传递参数列表到子程序里,只要在子程序调用的后面加上被括号圈引的列表表达式
    如$n=&max(10,15);
perl会自动将参数列表化名为特殊的数组变量@_,该变量在子程序执行期间有效,子程序可访问这个数组

多余的参数会被忽略,参数不足会得到undef
@_变量是子程序的私有变量
    sub max{
        if($_[0]>$_[1]){
            $_[0];
        }else{
            $_[1];
        }
    }
子程序中的私有变量:使用操作符my可以在子程序中随时创建私有变量
    my($m,$n)=@_;#将保存在@_中的参数赋值给具体的变量
更好的&max子程序:可以接受任意数目的参数
    sub max{
        my($max_so_for)=shift @_;
        foreach (@_){
            if($_>$max_so_far){
                $max_so_far=$_;
            }
        }
        $max_so_far;
    }
关于词法(my)变量:词法变量可以使用在任何块内,而不仅限于子程序,如if、while等
    my操作符并不会更改变量赋值时的上下文
use strict编译命令:接受更严格的限制,推荐
return操作符:从子程序中立即返回某个值,而不必执行完全部代码,类似于C语言
省略“与号”:如果编译器在调用子程序之前看到了子程序的定义,或perl单从语法上就能看出是子程序调用,可以省略&
    不要将子程序的声明放在调用子程序之后
    假如子程序和perl内置函数同名,必须使用&来调用
非标量返回值:如果在列表上下文调用子程序,就能返回列表值
    还可以什么都不返回,单写一个return,在标量上下文返回值是undef,在列表上下文返回值是空列表
持久性私有变量:使用state操作符来声明变量,可以在子程序的多次调用期间保留变量的值,并将变量作用域局限于子程序
    sub marine{
        state $n = 0;
        $n += 1;
        print "Hello, sailor number $n\n";
    }
————————————————
版权声明:本文为CSDN博主「Rockie」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rockiecxh/article/details/25214951

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值