分享

perl 子例程引用与闭包(对所写函数的引用和调用)

 herowuking 2015-07-31

1、对有名子例程的引用

sub great()

{

           print "hello \n";

}

my $rs = \&great;

重要一点我们并没有调用子例程great,这和创建对标量变量的引用时一样,也没有计算标量变量的值。于下面做对比:

my $rs = \&great();

也等价于:

sub great()

{

           print "hello \n";

}

print &$rs;

 

2、对匿名子例程的引用

 

3、对子例程引用的间接访问

Perl并不关心$rs指向的有名还是无名的子例程,间接访问操作对两种情况都适应

use strict;

use warnings;

sub great()

{

           my ($a, $b) = @_;

           print $a, "\n";

           print $b, "\n";

}

my $rs = \&great;

print &$rs(12,21);             #使用引用对函数的调用方式1

print $rs -> (23,32);           #使用引用对函数的调用方式2

如果中间的调用同样返回对子例程的引用的话,子例程调用可以链接起来。

use strict;

use warnings;

my $rs = \&test1;

$rs -> ("Batman") -> ("Robin");

sub test1()

{

           my $arg = shift;

           print $arg;

           return \&test2;

}

sub test2()

{

           my $arg = shift;

           print " and $arg\n";

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多