1
49
我发现使用findbin模块的最简单方法。这样地:
一般来说,我喜欢以这样的方式提供脚本:程序在whatever/bin中,库在whatever/lib中 在这些情况下,我使用一种稍微复杂一些的方法:
abs_path调用的目的是使@inc包含whatever/lib,而不是whatever/bin/../lib——这只是一个小小的更改,但使读取错误消息变得更容易。 |
2
52
我很好奇为什么这个简单的解决方案
没有上来。如果文件不是主要的可执行Perl脚本,而只是一个不可执行的Perl模块,那么findbin模块似乎有一些问题。至少这就是我在 documentation . 没有真正测试过。 要拥有与此Perl文件位置相关的任何其他路径,请执行如下操作
|
3
12
从 perlfaq8 答案 "How do I add a directory to my include path (@INC) at runtime?" . 关于这个问题还有其他几个答案。 如何在运行时将目录添加到include路径(@inc)中? 以下是修改include路径的建议方法,包括环境变量、运行时开关和代码语句: perllib环境变量
perl5lib环境变量
perl-idir命令行标志
使用lib pragma:
最后一个特别有用,因为它知道与机器相关的体系结构。lib.pm实用模块首先包含在Perl的5.002版本中。 |
4
3
看一看 Par::Packer . 它创建一个包含脚本所有依赖项的可执行文件。它使分发变得容易。您还可以向用户提供模块的版本,该版本可以安装在他们的系统上。见 Module::Starter 一个简单的方法来构建所有需要的文件,以进行标准的CPAN样式的分发。 |
5
2
通过使用
如:
其中lib包含我要使用的模块。 我知道这对 Perl 5 . 我对其他版本不太确定。 |
6
0
要将相对链接转换为绝对链接并添加到@inc,我通常使用ex::lib。当然,只有计划在所有计划运行脚本的计算机上保持脚本和模块的相对位置相同时,这才有用。 |
7
0
除上述解决方案外:
“我在开发/测试模块之前使用的最简单方法” 要部署它(在/usr/local/lib/site_perl/或@inc中的其他位置),需要 要在加载模块之前修改@inc,请执行以下操作:
|
8
-1
FindBin::libs 将发现所有lib都放置在相对于脚本运行路径的合理位置。 |
9
-1
保持简单。不需要导入任何库;只需查找当前工作目录:
对于类似的问题,您可以使用shell终端中的一行编程代码读取环境变量,该变量提供有关您所在位置、主目录、操作系统资料等的信息,例如:
不需要绑定某些库;只需使用
|