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";
      }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值