嗨,我正在使用由不再在公司的另一个人编写的 perl 脚本。
如果我单独运行脚本,则输出符合预期。但是当我从另一个代码重复调用脚本时,除了第一次之外,输出都是错误的。
我怀疑有些变量没有正确初始化。当它被独立调用时,每次它退出并且所有变量值都被初始化为默认值。但是当从另一个 perl 脚本调用时,模块和变量值可能会被转移到脚本的下一次调用。
有没有办法在我下次调用它之前从内存中清除被调用的脚本?
我尝试启用警告,它抛出了 1000 行警告......!
编辑:我如何调用另一个脚本:
代码如下所示:
do "processing.pl";
...
...
...
process(params); #A function in processing.pl
...
...
...
最佳答案
如果要强制重新加载模块,请从 %INC
中删除其条目。然后重新加载它。
例如:
sub reload_module {
delete $INC{'Your/Silly/Module.pm'};
require Your::Silly::Module;
Your::Silly::Module->import;
}
请注意,如果此模块依赖于正在设置的其他模块中的全局变量,则可能还需要重新加载这些全局变量。如果不看代码,就没有简单的方法可以知道。
关于perl - 如何强制卸载 Perl 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1222143/