Perl入门 笔记4之 子程序

定义子程序

关键字sub

例如:

sub func

{

  $n+=1;

}

c++不同的地方:在子程序里定义的变量$n属于全局变量,并且对于变量的位置没有要求,但是c++偏向于将子程序放在主函数的前面声明和定义,但是perl没有限制。

 

调用子程序

使用关键字符&

例如

&func; #n的值这时为1

&func; #n的值这是为2

 

返回值

两种方式:缺省方式返回和关键字return

缺省方式:把子程序中最后一句表达式作为返回值

例如在funcn的值就是返回值

return方式 :用return关键字显式的标记返回值,立即返回,与c++相同

 

参数

传递参数:&func(1,10);#110就是这个子程序的实际参数

c++的不同:定义时,没有形参列表。

子程序会自动将参数传入一个名为@_的数组,并且$_[0]表示第一个参数,依次类推

注意$_和$_[0]没有什么关系

值传递:?有没有类似引用形参这样的概念

例如:

sub max

{

  if($_[0]>$_[1]){

     $_[0];

}

else{

   $_[1];

}

}

调用:&max(2,3);

 

 

子程序的私有变量

关键字:my

sub max{

  my($m,$n);#mn为私有变量,生命周期只是存在于花括号内

}

 

use strict 编译命令

这样perl会要求你一定要用my来声明每个新的变量

如果没有my的限制,则编译的时候会产生fetal error

 

持久性私有变量

关键字:state

变量的作用域始终确定在子程序中,并且可以保留变量的值,有点static的意思

原文地址:https://www.cnblogs.com/cherri/p/1932602.html