我的脚本的父目录中有一个模块,我想'使用'它.
如果我做
use '../Foo.pm';
Run Code Online (Sandbox Code Playgroud)
我得到语法错误.
我试着这样做:
push @INC, '..';
use EPMS;
Run Code Online (Sandbox Code Playgroud)
并且..显然没有出现在@INC中
我要疯了!这有什么不对?
我正在使用CentOS 7并建立一个新的服务器.
以root身份登录时,我通过CPAN安装了多个perl模块.不幸的是,它们似乎已经安装在root的主目录中.在安装所有模块之前我没有注意到这一点,但是现在大多数模块都有这样的位置:
/root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi
/root/perl5/lib/perl5/5.16.3
/root/perl5/lib/perl5/x86_64-linux-thread-multi
/root/perl5/lib/perl5 /usr/local/lib64/perl5
Run Code Online (Sandbox Code Playgroud)
这意味着,对于除root之外的用户,这些模块基本上不存在,因为权限将它们锁定在该目录之外.
我知道我可以通过向所有用户提供对/ root的读访问权来解决这个问题,但我宁愿不这样做.
所以,我有几个具体问题要问:
感谢所有的建议.
cat MyConfig.pm
$CPAN::Config = {
'applypatch' => q[],
'auto_commit' => q[1],
'build_cache' => q[100],
'build_dir' => q[/root/.cpan/build],
'build_dir_reuse' => q[0],
'build_requires_install_policy' => q[yes],
'bzip2' => q[],
'cache_metadata' => q[1],
'check_sigs' => q[0],
'colorize_output' => q[0],
'commandnumber_in_prompt' => q[1],
'connect_to_internet_ok' => q[1],
'cpan_home' => q[/root/.cpan],
'ftp_passive' => q[1],
'ftp_proxy' => q[],
'getcwd' => q[cwd],
'gpg' => q[/bin/gpg],
'gzip' => q[/bin/gzip],
'halt_on_failure' => q[0],
'histfile' …Run Code Online (Sandbox Code Playgroud)