平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Perl函数(子程序)学习笔记”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
一、函数定义
子程序即一段分离的代码,它能够使减少重复代码且程序易读.perl中,子程序能够出现在程序的任何地方.但一般放在程序的开始或结尾.
sub subroutine{
statements;
}
sub开始,子程序名同变量的命名规则,可与变量同名,最好不要与内部函数同名,如果与内部函数同名则用$subroutine区分,不用&是内部函数,用&是定义函数,但省略&时混淆.
带有原型说明的子程序定义:
sub subroutine($$){ #需两个轻松变量的参数
statements;
}
说明:
1.()中的符号表示参数的类型,以一个字符表示一个参数.
2.$ 轻松变量 @ 列表 % 散列 & 匿名子程序 * 引用
3.前加为强制类型一致,;分隔必须的参数和可选参数.
4.@$;$表示第一个参数为列表,第二个参数为轻松变量,第三个参数轻松变量可选.
二、函数得到值
1.缺省子程序中最后执行的一个语句的值将用作得到值,如果在if块中为最后执行的语句,虽然不是子程序的最后一句,也是得到值.
$a=1;
不用等于,直接$retval;
split(/:/,@a) 得到数组.
2.语句return(retval) 退出子程序同时得到值retval,retval能够为列表.
3.得到错误
return 得到错误undef
用eval(‘subroutine') 函数,错误由$@变量中取得.
三、函数参数传递
形式:
$sub1($num1,$unm2,$num3); 调用
sub sub1{
my($num1,$unm2,$num3)=@_;
}
my $num1=shift;
my $num2=shift;
my $num3=pop;
说明:
1.所有参数在数组@_中,每个元素为$_[0],$_[1]
2.@_,$_[]为局部变量,当子程序内再调用子程序时,@_不改变,会新生成另一份@_.
3.改变@_内元素的值如$_[0]会改变主程序的参数值.
4.shift pop 一次取一个参数.对@_操作,shift取第一个参数,随后删除,pop取最后一个参数再删除.
- perl中5个常用错误
- Perl中的子程序学习笔记
- perl中子程序中参数的两种引用(传递)方式介绍
- perl push的用法及子程序得到值的反思
- perl子程序的运用及子程序中变量私有(my)声明的重要性
- perl 子程序 sub
- Perl进行错误处理和新建子程序的示例