相关疑难解决方法(0)

如何在不在@INC中的目录中"使用"Perl模块?

我的脚本的父目录中有一个模块,我想'使用'它.

如果我做

use '../Foo.pm';
Run Code Online (Sandbox Code Playgroud)

我得到语法错误.

我试着这样做:

push @INC, '..';
use EPMS;
Run Code Online (Sandbox Code Playgroud)

并且..显然没有出现在@INC中

我要疯了!这有什么不对?

perl module relative-path

51
推荐指数
4
解决办法
7万
查看次数

已安装的CPAN模块位于有问题的位置

我正在使用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的读访问权来解决这个问题,但我宁愿不这样做.

所以,我有几个具体问题要问:

  • 我做错了什么?第一次运行时我是否跳过CPAN中的选项?(CPAN配置粘贴在下面)
  • 清理它的最佳方法是什么?我认为我需要卸载模块,更改我的配置,然后重新安装它们?经验丰富的建议表示赞赏.
  • CentOS 7的理想通用安装目录是什么?我想把它们移到哪里?我假设CPAN会把它们放在一个理想的默认位置.

感谢所有的建议.

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)

perl cpan centos7

11
推荐指数
2
解决办法
5366
查看次数

标签 统计

perl ×2

centos7 ×1

cpan ×1

module ×1

relative-path ×1