我有一个 perl 脚本
#!/usr/bin/perl
use strict;
use lib 'lib';
use SOME_MOD;
这适用于我的旧服务器。在新服务器上,它只适用于绝对路径,比如
#!/usr/bin/perl
use strict;
use lib '/var/www/apps/myapp/lib';
use SOME_MOD;
我想念什么?
中的目录@INC
总是相对于当前工作目录,但一些 Web 服务器将 cwd 设置为/
. 如果你想要一个相对于脚本所在目录的补丁,你可以使用
use FindBin qw( $RealBin );
use lib "$RealBin/lib";
或者,由于您要添加的目录是$RealBin/lib
or $RealBin/../lib
,您可以使用mylib。
use mylib;
mod_perl 的 cwd 与脚本位置不同。使用 Perl CGI 脚本支持配置 Webserver 时,相对路径解析有效。