gpt4 book ai didi

perl - 遇到 Perl 依赖问题

转载 作者:行者123 更新时间:2023-12-04 05:37:33 32 4
gpt4 key购买 nike

我接手了一个用 Perl 编写的项目,它有一些依赖项,例如 Template::Toolkit , Image::ExifTool , 和 GD仅举几例。目前,这些依赖项使用 --prefix 构建到一个目录(“deps”文件夹)中。 make 中的选项.在主 Perl 脚本中,我有类似以下的内容来导入必要的模块:

use File::Spec::Functions qw(catdir);
use lib "lib";
use lib catdir(qw(deps lib perl5 site_perl));
catdir用于偏离某些系统要求(例如假设“/”是文件夹分隔符;如果有人有其他选择,我愿意接受建议!)。 “lib”文件夹包含我的模块,而“deps/lib/perl5/site_perl”文件夹是我的依赖项安装在原始机器上的位置。

但是,在另一台机器上构建依赖项后,所需的库似乎已移动到不同的文件夹。我现在需要使用这些语句让我的脚本正确运行:
use File::Spec::Functions qw(catdir);
use lib "lib";
use lib catdir(qw(deps lib perl 5.14.2));
use lib catdir(qw(deps share perl 5.14.2));

我想知道是否有指定前缀目录(“deps”)并有 use lib pragma 递归地在该目录中搜索我的依赖项。此外,此脚本的用户无法访问 Internet,因此将我的项目编译为 CPAN 模块会适得其反。

感谢所有的帮助!

最佳答案

使用INSTALL_BASE for the Makefile.PL--install_base for Build.PL安装模块时。他们提供stable install locations . PREFIX 和 --prefix 试图模拟 perl 如何布局其系统库,并且对于制作包更有用。

您还需要运行 rel2abs在将其提供给 lib 之前在路径上覆盖,以便为您提供绝对路径。这将保护您,以防您的代码 chdir s 然后尝试 require一个模块。或者您可以使用 lib::abs .

ikegami 是正确的,没有必要使传递给 lib 的文件路径可移植。只需以 Unix 风格传递它们。 Perl 会弄清楚的。

关于perl - 遇到 Perl 依赖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732595/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com