小编use*_*155的帖子

Perl,子例程覆盖,调用其父级| 参考

我编写了一个将从主脚本加载的Perl模块.该模块使用在主脚本中定义的子程序(我不是维护者).

对于主脚本中的一个子例程,需要扩展,但我不想修补主脚本.相反,我想覆盖我的模块中的函数并保存对原始子例程的引用.如果调用覆盖,我想调用原始子例程,然后进行一些额外的处理(如果需要).

同情模块代码

my $referenceToOriginalSub;

sub inititialize()
{
    $referenceToOriginalSub = \&originalSub;
    undef &originalSub;
    *originalSub = \&overrideSub;
}

sub overrideSub()
{
    #call original within mainscript
    &$referenceToOriginalSub(@_);
    # do some additional processing if required
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它最终会产生无限递归.显然,参考originalSub也指向它的替代.

所以,请你指出我正确的方向如何避免无限递归?

perl overriding

4
推荐指数
1
解决办法
1801
查看次数

标签 统计

overriding ×1

perl ×1