2014-04-03 28 views
8

我想在我的CPAN模块中包含一些额外的.pl文件。这些文件对于使用模块并不重要,但是当模块用于某些通用框架和应用程序时,这些文件会提供有用的功能/胶水。将非必需的.pl文件放在分配中的位置?

目前,我只是将.pl文件包含在发行版的“extras”目录中。这有缺点,文件没有安装在make install。有没有办法将它们包含在安装中以及它们应该放在哪里? (它们不是可执行文件,不属于“bin”。)“共享”是否有意义?或者这些类型的文件通常只是没有安装,并且留给用户从.tgz存档中取出并根据需要使用?

我使用Dist :: Zilla来管理我的分配。

+1

的一个例子我能想到的,松散地涉及这是['Mojolicious'](HTTPS:// metacpan。org/pod/Mojolicious),在['script directory'](https://metacpan.org/source/SRI/Mojolicious-4.91/script)中有3个文件,它们与模块一起安装:'hypnotoad','' mojo'和'morbo'。但是,它也有一个没有安装6个更多.pl的示例目录。我认为我倾向于使用用户可以有选择地添加到路径中的“/ share”的中间层理念,但是实际上取决于最终用户的期望。好问题 – Miller

+0

@Miller这些Mojolicious脚本安装在“bin”中,对吗? –

+0

在我的窗口框中,它们被安装到'C:\ strawberry \ perl \ site \ bin',所以是的。 – Miller

回答

0

我喜欢@乔的回答,只是在我的情况下,文件被WebWork macros - 个人.pl文件,使我从模块WebWork的最终用户的代码调用。因此,它们不适合此处讨论的任何类别,并且.pl文件不能作为模块。

这是我落得这样做:

  1. 把所有.PL宏文件到分配的“演员/ WebWork的”。
  2. 添加到“dist.ini”提交[ShareDir]节与dir = extras财产。
  3. 现在WebWork管理员可以从CPAN安装我的发行版,然后使用perl -MFile::ShareDir -e 'print File::ShareDir::dist_dir("Statistics-R-IO")'来查找宏并使其在WebWork中可用。
0

我不知道DIST ::吉拉是如何工作的,但由此产生的档案必须是什么的ExtUtils :: MakeMaker的创建兼容。

当你创建module-starter一个模块,它将使用ExtUtils::MakeMaker模块模板。它会创建几个文件和目录,例如您的模块所在的目录lib和您的测试所在的目录t

它不创建的一件事是bin目录。但是,如果你创建一个bin目录,你把文件放在该目录(如Perl脚本)下,这些文件将在你的Perl的分布bin目录下安装和连接到/usr/local/bin/usr/bin。这对你的脚本来说会是一个好地方吗?

+0

这些不是可执行文件,也不打算在命令行中使用。这就是为什么我不想把它们放在“bin”中。我会在问题中澄清这一点。 –

+1

那么,如果它们不可执行,它们是好的吗?如果它们是模块,它们应该有.pm扩展名并进入lib目录。如果它们是示例代码片段,则将它们放入文档中。 –

1

我建议如下:

  • 如果他们实际完成的方案或已大致完成,抛光再向上,让他们独立的项目,可以进入/bin用自己的POD。
  • 如果他们是实用胶水,请制作一个::Utils模块供他们居住并记录他们的使用情况。
  • 如果这些都是有用的代码片段,但不是你可以安装的地方或者样品用途或方便的成语,创建::Cookbook所有-POD模块,并将其包含有与每一个相应的照明的解释。
相关问题