我怎样才能重新加载“' require'?

时间:2015-03-08 13:37:21

标签: perl

我的主要perl项目有一系列需要调用其他perl脚本的require语句。主程序中的示例代码段:

#!/usr/bin/perl
require "./test1.pl";
require "./test2.pl";
require "./test3.pl";
require "./test4.pl";

如果我对test3.pl进行了更改,如何将其重新加载到内存中并将其更改反映到当前正在运行的项目实例中?目前,如果我对test3.pl进行了一些小改动,我必须重新启动整个项目。如果可能的话,我想把它放到子程序中。

谢谢。

2 个答案:

答案 0 :(得分:5)

有两种方法可以从模块加载代码 - use这样做是为了编译时间。 require在运行时这样做。

执行此操作时,它包含%INC中的模块。

如果您:

,您可以看到这种情况
use Data::Dumper;
print Dumper \%INC;

所以重新加载 - 从%INC删除它并重新运行require

delete ( $INC{'./test3.pl'} );
require './test3.pl';

您可能还会觉得有用:

no warnings 'redefine';

您可以使用它暂时关闭“子程序重新定义”警告。 (您正在使用strictwarnings吗?)

答案 1 :(得分:0)

您可以使用Module::Reloadagain。但是,也许是时候重新考虑你的设计了。