• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

perl语言编程第六章-子过程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

sub NAME ;

子过程定义

sub NAME

{

    。。。

}

匿名子过程

声明的时候没有名字,只有sub关键字加代码块。这种写法实在蛋疼,不知道有何好处?下面代码中subref是指向这个匿名子过程的引用。

use strict ;

my$subref=sub{
my ($a,$b) =@_ ;
return$a+$b ;
} ;

print$subref->(1,2),"\n" ;

通过use关键字引入另一个模块中的子过程。

use qw(name1, name2, name3) ;

子过程的调用

直接调用

NAME(LIST) #有圆括弧时,&可以省略。

NAME LIST 如果预声明/输入了子过程,那么圆括弧是可选的?那么具体什么时候不能省略圆括弧么?

&NAME 把当前@_内容作为子过程参数。

间接调用

&$subref(LIST) #间接调用的时候&不能省略。

$subref->(LIST)。

&$subref 把当前@_内容作为子过程参数。

子过程命名风格

自定义的子过程一般采用全小写字母命名,因为perl中大写的子过程都是自动调用的,比如析构函数DESTROY。

子过程的设计理念

perl的子过程定义体现了一个理念,那就是支持可变参数。所以通常定义的子过程并为指定参数,当然可以使用原型方法来提供。

返回值

可以使用return语句来返回不同的值,如果仅有return语句,后面没有值,那么返回undef或者空列表(视上下文而定)

sub test{
return ; # return undef or empty list
}

传入引用

下面这个程序使用数组引用做参数,有些地方我还不是很明白,需要深入研究

use strict ;

sub sum{
my ($aref) =@_ ;
my$total=undef ;
foreach (@$aref){
$total+=$_ ;
}
return$total ;
}

my@list= (1..100000) ;
my$result=&sum(\@list) ;
print$result,"\n" ;

1 ;

无参子过程

下面两个子过程完全不同

sub test {

}

sub test () {

}

第二个子过程多了一对(),表示这个子过程是没有参数的,而第一个子过程则可以有任意个参数

====


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
perl总结(1)发布时间:2022-07-22
下一篇:
Perl碎碎念发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap