加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl 函数指针

发布时间:2020-12-15 23:58:28 所属栏目:大数据 来源:网络整理
导读:还是研究perl. 我的意图,是把所有用户界面关注的 perl调用,用一个函数进行包装。 所以,我需要进行一层Wrap. 也就是说,函数要调用函数。 经过与同事几个小时的研究,两人一番讨论。 终于找到了方法。 这里面有两个关键问题,一个是函数指针,另一个是参数

还是研究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,"kjgh");


#也可以写成:UIOper::AgentCall(‘haotestmode::MVpackage’,"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 "@xxn";

??? 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,$bn"; ??? return 1; } 1;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读