子程序定义-1

子程序即一段分离的代码,它可以使减少重复代码且使程序易读。PERL中,子程序可以出现在程序的任何地方。

但一般放在程序的开始或结尾。

sub subroute{
 statements:
}

Sub开始,子程序名同变量的命名规则,可与变量同名。最好不要与内部函数同名。如果与内部函数同名则用&subroutine区分,不用&是内部函数,&是定义的函数,


带有原型说明的子程序定义

sub subroutine ($$) {   ##需要两个简单变量的参数
     statements;
}

() 中的符号表示参数的类型。以一个字符表示一个参数.

$ 简单变量 @列表 %散列

&匿名子程序  *引用

前面加为强制类型一致。;分隔必须的参数和可选参数。

@$;$ 表示第一个参数为列表


函数返回值:

1. 缺省子程序中最后执行的一个语句的值将用作返回值,如果在if块中为最后执行的语句,虽然不是子程序的最后一句,也是返回值。

$a=1;

不用等于,直接$retval;

split(/:/,@a);返回数组。

2.语句return(retval);退出子程序并返回值retval,retval可以为列表。

3.返回错误

return;返回错误undef

用eval('subroutine');函数,错误由$@变量中取得。



参数传递

形式:

&sub1($number1,$number2,$number3);#调用

sub sub1{
my ($number1,$number2,$number3)= @_;
}

my $number1=shift;

my $number2=shift2;
my $number3=pop;

所有参数在数组@_中,每个元素为$_[0],$_[1]

@_,$_[] 为局部变量,当子程序内再调用子程序时, @_不改变。会新生成另一份@_

改变@_内元素的值如$_[0] 会改变主程序的参数只。

shift pop 一次取一个参数。对@_操作,shift 取第一个参数,然后删除,pop取最后一个参数再删除。

原文地址:https://www.cnblogs.com/hzcya1995/p/13352002.html