每次调用perl解释器时加载的.pm文件?

时间:2011-08-13 17:00:32

标签: perl

我以为我记得在哪里读过有关perl可以配置为在启动时自动加载某个.pm文件的地方。

我知道PERL5OPT,但对于我的记忆,这是一个特定的文件,如果它存在就会被加载。

是否可以设置编译选项(即通过Configure)?

2 个答案:

答案 0 :(得分:9)

通过perldoc perlrun阅读,看起来你正在寻找-f选项中讨论的内容:

  

-f

     

在启动时禁用执行$ Config {sitelib} /sitecustomize.pl。

     

可以构建Perl,以便默认情况下尝试执行   启动时$ Config {sitelib} /sitecustomize.pl(在BEGIN块中)。这个   是一个钩子,允许系统管理员自定义Perl的行为方式。它   例如,可用于向@INC数组添加条目以生成Perl   在非标准位置查找模块。

     

Perl实际上插入了以下代码:

BEGIN {
do { local $!; -f "$Config{sitelib}/sitecustomize.pl"; }
&& do "$Config{sitelib}/sitecustomize.pl";
}
     

因为它是实际的(不是必需的),所以sitecustomize.pl没有   需要返回一个真正的价值。代码在包main中运行   自己的词汇范围。但是,如果脚本死掉,则不会设置$ @。

     

$ Config {sitelib}的值也是用C代码确定的,而不是   从Config.pm读取,没有加载。

     

代码很早就执行了。例如,对@INC所做的任何更改   将显示在perl -V的输出中。当然,END块将是   同样执行得很晚。

     

在运行时确定是否已在您的程序中编译此功能   perl,你可以检查$ Config {usesitecustomize}的值。

我从来没有这样做,但看起来如果你把你想要的东西放在$Config{sitelib}/sitecustomize.pl中,你就会得到你想要的东西。

请参阅:

答案 1 :(得分:0)

我对“启动时”的含义感到困惑。如果你的意思是脚本/ CGI /其他什么是“开始”,那么只需使用脚本中的模块:

使用Data :: Dumper;

或者你的意思是其他什么?