2015-12-21 106 views
1

我有这样的目录结构:如何组织Perl模块

/path/to/lib/perl5/5.22.1 

我曾经在一个特定的格式安装在目录中的一些Perl模块:

ls 
Data-UUID IPC-System-Simple JSON Log-Message Math-Gradient Term-UI 

例如,如果你去里面JSON,目录如下:

/path/to/lib/perl5/5.22.1/JSON/2.53 

我的所有模块都举办这样的:

/path/to/lib/perl5/5.22.1/Module-name/Module-version/... 

我已经加入/path/to/lib/perl5/5.22.1我PERL5LIB这样的:

export PERL5LIB=/path/to/lib/perl5/5.22.1:$PERL5LIB 

但我的脚本无法找到Perl模块。你认为目录结构是一个问题吗?我只是制作了这个结构,以便将它组织为perl-module-name/module-version。建议非常感谢。

谢谢!

回答

7

鉴于列出的目录的名称:

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

看起来你没有完全安装了模块。看起来您已经下载了软件包压缩包,将其解压缩,然后不运行安装程序

你需要进入每个目录和:

perl Makefile.PL 
make 
make test 
make install 

更重要的是,使用cpanm或另一种下载模块的程序安装它们,解决他们的依赖关系,并安装它们。

+0

其实我确实运行过安装程序。这些是目录的名称,因为我将我的PREFIX设置为perl Makefile.PL,以便它创建一个模块目录名称/ version/installation-happens-here。 –

+0

然后你需要在你的PERL5LIB路径中包含你的'module directory name/version/installation-happens-here'目录下的*每一个*目录。 – Quentin

+0

是的,这正是我所困惑的。我认为我可以为安装创建特定的目录,只需将父文件夹名称放在PERL5LIB路径中,并且perl将从父文件夹开始搜索模块,等等。那么,如果我只想要一个单独的库文件夹,最佳做法是什么? –

4

Perl在PERL5LIB指定的路径内需要一个特定的目录结构。例如IPC-System-Simple必须安装在文件IPC/System/Simple.pm中。等等。你不能只是去弥补目录结构,并希望Perl能制定出你的结构并找到它需要的东西

+0

好吧,我现在明白了。谢谢! –