Perl-13---子程序-3

一、子程序的引用:

Perl中不仅可以对标量变量、数组变量、哈希变量建立引用,而且也可以对子程序建立引用;子程序的引用类似于C/C++中的函数指针;构造方法如下:

$Pointer_to_Sub = sub {  #函数体 };

这样就建立了一个对匿名子程序的引用;通过子程序引用调用子程序的语法如下

&$Pointer_to_Sub(参数列表);

1、子程序模板:

有时候可以通过子程序返回不同的子程序引用,可以创建一系列不同的子程序,这样就可以把操作模板化,这类似于C/C++中的回调函数,即 CALLBACK函数;

2、数组与子程序:

 由于数组@_是一个一维数组,所以,不管逆传递多少个数组给子程序,Perl解释器都会把你传递的数组都转换成标量值,然后按照你传递的顺序把这些标量值存储到数组@_中;同样,在返回值中,如果返回的是一个数组,那么,不管逆包装多少个子数组到一个列表中,Perl解释器都会把这些子数组转换成标量值,然后存储到一个一维数组中,供子程序返回;因此,如果按照形如 my (@a,@b) = @_;形式的语句来获取参数列表值的时候,全部数组值都被赋值给数组@a,而数组@b则为空数组;这都是因为数组@_是个一维数组;

所以,在传递数组给子程序的时候,要注意以下几点:

◆ 当传递给子程序的参数是多个数组时,一定要使用数组的引用;

◆ 不要试图在子程序中使用形如 (@Array1,@Array2,。。。,@ArrayN)  =  @_;的语句处理参数,除非想要

     把所有参数集中到一个长的数组中;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值