大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> CGI专区 -> Perl教学 第八篇 子程序

Perl教学 第八篇 子程序

时间: 2021-07-31 作者:daque

一、设置 子步调即实行一个特出工作的一段辨别的代码,它不妨使缩小反复代码且使步调易读。perl中,子步调不妨出此刻步调的任何场合。设置本领为:sub subroutine{statements;}二、挪用 挪用本领如次:1、用&挪用 &subname;...sub subname{...}2、先设置后挪用 ,不妨简略&标记sub subname{...}...subname;3、前向援用 ,先设置子步调名,反面再设置子步调体sub subname;...subname;...sub subname{...}4、用do挪用 do my_sub(1, 2, 3);等价于&my_sub(1, 2, 3);三、归来值 缺省的,子步调中结果一个语句的值将用作归来值。语句return (retval);也不妨推出子步调并归来值retval,retval不妨为列表。四、限制变量 子步调中限制变量的设置有两种本领:my和local。其辨别是:my设置的变量只在该子步调中生存;而local设置的变量不生存于主步调中,但生存于该子步调和该子步调挪用的子步调中(在perl4中没有my)。设置时不妨给其赋值,如:my($scalar) = 43;local(@array) = (1, 2, 3);五、子步调参数传播 1、情势 &sub1(&number1, $number2, $nubmer3);...sub sub1{my($number1, $number2, $number3) = @_;...}2、传递数组 &addlist (@mylist);&addlist ("14", "6", "11");&addlist ($value1, @sublist, $value2);...sub addlist {my (@list) = @_;...}参数为数组时,子步调只将它赋给一个数组变量。如sub twolists {my (@list1, @list2) = @_;}中@list2必定为空。但大略变量和数组变量不妨同声传播:&twoargs(47, @mylist); # 47赋给$scalar,@mylist赋给@list&twoargs(@mylist); # @mylist的第一个元素赋给$scalar,其他的元素赋给@list...sub twoargs {my ($scalar, @list) = @_;...}六、递归子步调 perl中,子步调不妨彼此挪用,其挪用本领与上述沟通,当挪用该子步调自己时,即成了递归子步调。递归子步调有两个前提:1、除去不被卧步调变换的变量外,一切的变量必需的限制的;2、该子步调要含有遏止挪用自己的代码。七、用别号传播数组参数 1、用前方讲到的挪用本领&my_sub(@array)将把数组@array的数据正片到子步调中的变量@_中,当数组很大时,将会耗费较多的资源和功夫,而用别号传播将不做那些处事,而对该数组径直操纵。情势如:@myarray = (1, 2, 3, 4, 5);&my_sub(*myarray);sub my_sub {my (*subarray) = @_;}2、此本领一致于c谈话中的传播数组的开始地方南针,但并不一律,在设置数组的别号之后,即使有同名的大略变量,则对该变量也是起效率的。如:$foo = 26;@foo = ("here's", "a", "list");&testsub (*foo);...sub testsub {local (*printarray) = @_;...$printarray = 61;}当子步调实行完,主步调中的$foo的值仍旧成了61,而不复是26了。3、用别号的本领不妨传播多个数组,如:@array1 = (1, 2, 3);@array2 = (4, 5, 6);&two_array_sub (*array1, *array2);sub two_array_sub {my (*subarray1, *subarray2) = @_;} 在该子步调中,subarray1是array1的别号,subarray2是array2的别号。八、预订义的子步调 perl5预订义了三个子步调,辨别在一定的功夫实行,它们是:begin子步调在步调启用时被挪用;end子步调在步调中断时被挪用;autoload子步调在找不到某个子步调时被挪用。你不妨本人设置它们,以在一定功夫实行所须要的举措。如:begin {print("hi! welcome to perl!\n");}autoload{print("subroutine $autoload not found\n"); # 变量$autoload即未找到的子步调名print("arguments passed: @_\n");}若同一个预订义子步调设置了多个,则begin程序实行,end逆序实行。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.