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"); 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;(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |