如何防止在Perl中覆盖子?

前端之家收集整理的这篇文章主要介绍了如何防止在Perl中覆盖子?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用遗留代码,并且需要一个定义子foo的.pl文件.我的问题是在我的main :: namespace中已经存在另一个子foo,稍后在我目前没有处理的程序的一部分中调用它.

我需要的文件定义了sub foo {},因为很明显它不希望foo在通常被调用的地方发生.就我而言,这很糟糕.

我试过玩* foo glob:

*old_foo = *foo;
require 'foo_killer.pl';
*foo = *old_foo;

当然,这不起作用,因为我只创建了一个别名(正如brian d foy在Mastering Perl的第133页指出的那样)因此* old_foo将指向现在的’empty’子程序.

有没有办法以某种方式将* foo {CODE}中的内容复制到其他地方而不是别名呢?或者是否有其他方法可以解决这个问题?

解决方法

试试这样吧

{
    local *foo;
    require 'foo_killer.pl';
}

猜你在找的Perl相关文章