perl 函数指针

还是研究perl.

我的意图,是把所有用户界面关注的 perl调用,用一个函数进行包装。

所以,我需要进行一层Wrap.

也就是说,函数要调用函数。

经过与同事几个小时的研究,两人一番讨论。

终于找到了方法。

这里面有两个关键问题,一个是函数指针,另一个是参数。

参数对于PERL来说,真不是问题,这是我这一个多月,感触最深的。是PERL的灵魂。

但函数指针,走了大半天弯路才明白写法:

UIOper::AgentCall( \& haotestmode::MVpackage,"adf","kjgh");

我一开始,少了前面的取址符。也真是够透豆的。

结果是,先调用了haotestmode::MVpackage,然后说一个参数也没拿到。

好了,代码附上:

test.pl

#! /usr/bin/perl

use UIOper;
use haotestmode;


UIOper::AgentCall(\&haotestmode::MVpackage,"adf","kjgh");


#也可以写成:UIOper::AgentCall(‘haotestmode::MVpackage’,"adf","kjgh");


UIOper.pl

package UIOper;
#use haotestmode;

#comment of mvpackage

%FuncMap=('haotestmode::MVpackage'=>\&haotestmode::MVpackage);

sub AgentCall
{
    my ($a,@xx)=@_;
    print "AgentCall called.\n";    
    print "@xx\n";

    my $funcptr= $FuncMap{'haotestmode::MVpackage'};

# 也可以写作:    my $funcptr= $FuncMap{$a};

    #my $funcptr= $a;
    $funcptr->(@xx);
    return 1;
}
1;

haotestmode.pl

#! /usr/bin/perl
package haotestmode;

#comment of mvpackage
sub MVpackage
{
    my ($a, $b)=@_;
    print "MVpackage called.\n";    
    print "$a,$b\n";
    return 1;
}
1;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值