我以为我记得在哪里读过perl可以配置为.pm在启动时自动加载某个文件的地方.
我知道PERL5OPT,但对于我的记忆,这是一个特定的文件,如果它存在将被加载.
它是一个可以设置的编译选项(即通过Configure)吗?
通过perldoc perlrun读取它看起来像是在寻找-f选项中讨论的内容:
-F
在启动时禁用执行$ Config {sitelib} /sitecustomize.pl.
可以构建Perl,以便默认情况下尝试在启动时执行$ Config {sitelib} /sitecustomize.pl(在BEGIN块中).这是一个允许sysadmin自定义Perl行为方式的钩子.例如,它可以用于向@INC数组添加条目,以使Perl在非标准位置查找模块.
Perl实际上插入了以下代码:
Run Code Online (Sandbox Code Playgroud)BEGIN { do { local $!; -f "$Config{sitelib}/sitecustomize.pl"; } && do "$Config{sitelib}/sitecustomize.pl"; }由于它是实际的do(不是require),因此sitecustomize.pl不需要返回true值.代码在包main中运行,在自己的词法范围内.但是,如果脚本死掉,则不会设置$ @.
$ Config {sitelib}的值也在C代码中确定,而不是从未加载的Config.pm中读取.
代码很早就执行了.例如,对@INC所做的任何更改都将显示在输出中
perl -V.当然,END块也会很晚执行.要在运行时确定是否已在perl中编译此功能,可以检查$ Config {usesitecustomize}的值.
我从来没有这样做,但看起来如果你把你想要的东西放在你$Config{sitelib}/sitecustomize.pl身上就会得到你想要的东西.
看到:
| 归档时间: |
|
| 查看次数: |
281 次 |
| 最近记录: |