Perl_子例程调用by引用

#第一种情况,传匿名子例程引用

my $rs=\&greet;

#$rs=\&greet();#wrong

#$rs->('Joan','Kim');#当调用的已经是匿名子例程引用的时候。这行放在这里报错


my $hidrs=sub{
        my $ele=shift (@_);
        print "$ele say \"Hello World\".\n";
};#here is only 1 line not 4 lines
#&$hidrs('Tim');

#my $hidrs这块不能放在sub greet块的后面,不然会报错。


$rs->('Joan','Kim');#当调用的已经是匿名子例程引用的时候。这行放在这里工作正常

sub greet{
        my $ele=shift;
        print "$ele and ";
        return &$hidrs;#当调用的已经是 匿名子例程引用的时候,要注意写法与下面的 区分开来
}#here is 5 lines

$rs->('Joan','Kim');#当调用的已经是 匿名子例程引用的时候。这行放在这里工作 正常


#另一种情况,传有名子例程引用

my $rs1 = \&test1;
$rs1 -> ("Batman") -> ("Robin");#当调用的是 有名子例程引用的时候。这行放在这里工作 正常

#sub test1()#work

subtest1

{

        my $arg = shift;
        print $arg;
        return \&test2;#当调用的是 有名子例程引用的时候

}

$rs1 -> ("Batman") -> ("Robin");#当调用的是有名子例程引用的时候。这行放在这里工作正常


#sub test2()#work

sub test2

{
        my $arg = shift;
        print " and $arg say \"Hello World\" too.\n";

}

$rs1 -> ("Batman") -> ("Robin");#当调用的是有名子例程引用的时候。这行放在这里工作正常

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值