我正在使用遗留代码,并且必须使用require
定义 sub 的 .pl 文件foo
。我的问题是在我的main::
命名空间中已经有另一个 sub foo
,稍后在我目前不处理的程序的一部分中调用它。
我需要定义的文件,sub foo {}
因为显然它不希望 foo 的事情发生在它通常被调用的地方。就我而言,这很糟糕。
我尝试过使用*foo
glob:
*old_foo = *foo;
require 'foo_killer.pl';
*foo = *old_foo;
当然,这不起作用,因为我只创建了一个别名(正如 brian d foy 在Mastering Perl的第 133 页上指出的那样),因此*old_foo
将指向现在的“空”子例程。
有没有办法以某种方式将其中的内容复制*foo{CODE}
到其他地方而不是别名?或者是否有另一种方法来解决这个问题?