如何组织Perl模块

如何组织Perl模块,perl,Perl,我的目录结构如下: /path/to/lib/perl5/5.22.1 /path/to/lib/perl5/5.22.1/JSON/2.53 export PERL5LIB=/path/to/lib/perl5/5.22.1:$PERL5LIB 我已在该目录中以特定格式安装了一些perl模块: ls Data-UUID IPC-System-Simple JSON Log-Message Math-Gradient Term-UI 例如,如果进入JSON,目录如下所示: /p

我的目录结构如下:

/path/to/lib/perl5/5.22.1
/path/to/lib/perl5/5.22.1/JSON/2.53
export PERL5LIB=/path/to/lib/perl5/5.22.1:$PERL5LIB
我已在该目录中以特定格式安装了一些perl模块:

ls
Data-UUID  IPC-System-Simple  JSON  Log-Message  Math-Gradient  Term-UI
例如,如果进入JSON,目录如下所示:

/path/to/lib/perl5/5.22.1
/path/to/lib/perl5/5.22.1/JSON/2.53
export PERL5LIB=/path/to/lib/perl5/5.22.1:$PERL5LIB
我所有的模块都是这样组织的:

/path/to/lib/perl5/5.22.1/Module-name/Module-version/...
我在PERL5LIB中添加了/path/to/lib/perl5/5.22.1,如下所示:

/path/to/lib/perl5/5.22.1
/path/to/lib/perl5/5.22.1/JSON/2.53
export PERL5LIB=/path/to/lib/perl5/5.22.1:$PERL5LIB
但是我的脚本无法找到perl模块。你认为目录结构有问题吗?我刚刚创建了这个结构,以便将其组织为perl模块名/模块版本。非常感谢您的建议


谢谢

给定所列目录的名称:

数据UUID IPC系统简单JSON日志消息数学梯度项UI

看起来您根本没有安装模块。看起来您已经下载了tarballs包,提取了它们,然后没有运行安装程序

您需要进入每个目录并:

perl Makefile.PL
make
make test
make install

更好的方法是,使用或其他下载模块的程序安装它们,解决它们的依赖性,然后为您安装它们。

给定所列目录的名称:

数据UUID IPC系统简单JSON日志消息数学梯度项UI

看起来您根本没有安装模块。看起来您已经下载了tarballs包,提取了它们,然后没有运行安装程序

您需要进入每个目录并:

perl Makefile.PL
make
make test
make install

更好的方法是,使用下载模块的程序或其他程序安装它们,解决它们的依赖性并为您安装。

Perl需要在
PERL5LIB
指定的路径内使用特定的目录结构。例如,
IPC System Simple
必须安装在文件
IPC/System/Simple.pm
中。等等。您不能只是构建目录结构,而希望Perl能够计算出您的结构并找到它所需要的内容

Perl需要在
PERL5LIB
指定的路径中使用特定的目录结构。例如,
IPC System Simple
必须安装在文件
IPC/System/Simple.pm
中。等等。你不能只是构建目录结构,然后希望Perl能够计算出你的结构并找到它需要的东西。实际上,我已经运行了安装程序。这些是目录的名称,因为我在perl Makefile.PL中设置了前缀,以便它在此处创建模块目录名/version/installation-ockes-here。然后,您需要在PERL5LIB路径中包含
模块目录名/version/installation-ockes-here
目录中的每一个。是的,这正是我所困惑的。我的想法是,我可以为安装创建特定的目录,只需将父文件夹名称放在PERL5LIB路径中,perl将搜索从父文件夹开始的模块,依此类推。那么,如果我只想要一个库文件夹,最好的做法是什么?不要一直更改前缀。谢谢你的建议。我将只创建一个库文件夹,然后在其中安装我的所有模块。实际上,我运行了安装程序。这些是目录的名称,因为我在perl Makefile.PL中设置了前缀,以便它在此处创建模块目录名/version/installation-ockes-here。然后,您需要在PERL5LIB路径中包含
模块目录名/version/installation-ockes-here
目录中的每一个。是的,这正是我所困惑的。我的想法是,我可以为安装创建特定的目录,只需将父文件夹名称放在PERL5LIB路径中,perl将搜索从父文件夹开始的模块,依此类推。那么,如果我只想要一个库文件夹,最好的做法是什么?不要一直更改前缀。谢谢你的建议。我将只创建一个库文件夹,然后在其中安装我的所有模块。好的,我现在明白了。谢谢好的,我现在明白了。谢谢