【发布时间】:2019-04-23 08:19:17
【问题描述】:
我拥有一个用 Perl 和 Java 编写的工具。其中一个脚本使用JSON 和Data::Dumper 等模块。
我的环境和我的@INC 知道这些模块的位置。但是使用我的工具的用户有一个错误:
Can't locate JSON.pm in @INC (@INC contains: <PATHS> .) at /tools/bin/myscript.pl line 15.
我了解@INC 的工作原理,我只是想知道解决此问题的正确方法是什么。我们在同一家公司(不同地区)工作,因此用户确实有权访问包含这些模块的区域。
从我的角度来看,这些脚本运行良好,因为我的@INC 确实包含一个路径,其中包含这些模块。
从之前的帖子中,我了解到我可以将PERL5LIB 设置为包含(非递归)包的区域。但是这个问题感觉还不够好,因为我必须指定多路径(因为 JSON 和 Data::Dumper 不在同一个区域,PERL5LIB 检查目录中的模块但不是递归的)。
另外,从以前的线程中我了解到我可以运行perl -I myscript.pl,但这并没有帮助,因为我的工具主要是执行 Perl 的 Java。此外,我不喜欢在脚本本身进行任何更改,而是在用户的环境中进行更改。
解决这类问题的方法是什么?有没有办法从Linux“推送”到@INC 的路径?今后如何防止此类问题的发生?
【问题讨论】:
-
为什么不直接安装代码所依赖的 CPAN 模块?
-
@robert 它们安装在不同的区域。
标签: perl