perl 函数指针

前端之家收集整理的这篇文章主要介绍了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,"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 "@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;

猜你在找的Perl相关文章