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

Eri*_*ikR 1 perl

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

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

它是一个可以设置的编译选项(即通过Configure)吗?

apa*_*r42 9

通过perldoc perlrun读取它看起来像是在寻找-f选项中讨论的内容:

-F

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

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

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

BEGIN {
do { local $!; -f "$Config{sitelib}/sitecustomize.pl"; }
&& do "$Config{sitelib}/sitecustomize.pl";
}
Run Code Online (Sandbox Code Playgroud)

由于它是实际的do(不是require),因此sitecustomize.pl不需要返回true值.代码在包main中运行,在自己的词法范围内.但是,如果脚本死掉,则不会设置$ @.

$ Config {sitelib}的值也在C代码中确定,而不是从未加载的Config.pm中读取.

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

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

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

看到: