设为首页 收藏本站
查看: 1132|回复: 0

[经验分享] perl语言编程第六章-子过程

[复制链接]

尚未签到

发表于 2015-12-28 02:46:14 | 显示全部楼层 |阅读模式
子过程声明
  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 () {
}
  第二个子过程多了一对(),表示这个子过程是没有参数的,而第一个子过程则可以有任意个参数
  ====

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-157180-1-1.html 上篇帖子: Perl单URL爬虫 下篇帖子: perl 元字符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表