perl -- 子过程-->语法
?
1、声明一个命名子过程,但不定义: sub NAME sub NAME PROTO sub NAME??????? ATTRS sub NAME PROTO? ATTRS 如果要定义一个子过程,只要在上面加上一个BLOCK就可以了 sub NAME PROTO? ATTRS BLOCK PROTO和ATTRS表示原型和属性,相对于NAME和BLOCK不重要,NAME和BLOCK是基本部分,其他的可以省略。 2、没有NAME的形式也是可以的 ,你必须提供一个调用子过程的方法。因此你必须保存返回值,因为这种形式的sub声明方法不但在编译的时候编译,同时也产生一个运行时的返回值,所以我们就可以保证保存它: $subref = sub BLOCK; 也可以用下面的方法引入在另一个模块中定义的子过程: use MODULE qw (NAME1 NAME2 NAME3…); 3、直接调用子过程的方法 NAME(LIST)???? #有圆括弧时,&是可选的 NAME LIST?????? #如果预声明/输入了子过程,那么圆括弧是可选的 &NAME?? #把当前的@_输出到子过程,并且绕开原型 4、间接调用子过程,(通过名字或引用),可以使用下面的任何一种方法: &$subref(LIST)??????? #在间接调用的时候,&不能省略 $subref->(LIST)??????? # &¥subref?????? #把当前的@_输出到该子过程 ? #:在正式的情况下,一个子过程的名字包括&前缀,但是通常情况下&是可选的; #:如果预先定义了子过程,那么圆括弧是可选的; #:在只使用子过程的名字的时候,&不能省略; 例如:1)子过程名字被用作一个参数来判断是否已经定义过; ???????? 2)用$subref = &;name来获取一个命名子过程的引用的时候; ???????? 3)$subref->(),则不需要&; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |