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

如何防止在Perl中覆盖子?

发布时间:2020-12-15 23:20:18 所属栏目:大数据 来源:网络整理
导读:我正在使用遗留代码,并且需要一个定义子foo的.pl文件.我的问题是在我的main :: namespace中已经存在另一个子foo,稍后在我目前没有处理的程序的一部分中调用它. 我需要的文件定义了sub foo {},因为很明显它不希望foo在通常被调用的地方发生.就我而言,这很糟糕
我正在使用遗留代码,并且需要一个定义子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';
}

(编辑:李大同)

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

    推荐文章
      热点阅读