我以为我记得在哪里读过有关perl可以配置为在启动时自动加载某个.pm
文件的地方。
我知道PERL5OPT
,但对于我的记忆,这是一个特定的文件,如果它存在就会被加载。
是否可以设置编译选项(即通过Configure
)?
答案 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;
或者你的意思是其他什么?