如何检查Perl的可用性,其版本和所需模块的存在?

时间:2010-04-09 06:45:31

标签: bash perl perl-module

我写了一个Perl脚本,我只是想把它给每个人, 为此,我计划编写一个bash脚本,用于测试用户的环境并查找该环境是否能够运行Perl脚本。

我想测试类似的东西:

  1. Perl是否已安装在该系统中
  2. Perl应该具有版本5或更高版本
  3. 模块JSON :: Any是否可用
  4. 任何建议都会非常感激: - )

3 个答案:

答案 0 :(得分:14)

不,不要编写shell脚本。 Perl已经有了一个很好的方法来做到这一点。正确的方法是使用普通工具链构建一个支持CPAN的分发。其中一些问题在perlnewmodperlmodstyleperlmodinstall中进行了解释。

对于最小的工作示例,请创建目录布局:

.
├── Build.PL
├── README
└── script
    └── abuscript.pl

Build.PL文件中,输入:

use 5.000;
use Module::Build qw();
Module::Build->new(
    module_name        => 'abuscript',
    dist_version       => '1.000',
    dist_author        => 'abubacker <abubacker@example.com>',
    dist_abstract      => 'describe what the script does in one sentence',
    configure_requires => {
        'perl' => '5.000',
    },
    requires           => {
        'JSON::Any' => 0,
    },
)->create_build_script;

更改细节以符合您的目的。

README文件中,输入一些安装说明,例如:

To install this module, run the following commands:

perl Build.PL
./Build install

完成所有操作后,您可以运行:

perl Build.PL
./Build manifest
./Build dist

这将生成您将分发的.tar.gz存档。告诉您的用户像任何其他CPAN模块一样安装它,或者如果他们不知道这意味着什么,他们应该阅读自述文件。

如果您有时间,我建议您将脚本转换为模块。程序pl2pm(Perl附带)和CPAN模块Module-Starter-PBP可以帮助您。

如果许可证允许,可以将您的代码上传到CPAN,以使您的用户更方便。首先在以下任何一个地方寻求帮助:邮件列表module-authors@perl.org,网络论坛PerlMonks,IRNET频道#toolchain on MagNET(irc://irc.perl.org/toolchain)

答案 1 :(得分:8)

关于检查Perl可用性,最简单的方法是检查命令perl -v的返回码(退出代码),如果不是0,则表示没有Perl。

现在有关Perl的要求,应该从Perl脚本中处理它们:

#!/usr/bin/env perl
use 5.006_001;
use ModuleName 2.0;

上面的Perl代码只能运行perl 5.6.1或更高版本,并且运行模式“ModuleName”版本2.0或更高版本。 无需从bash手动检查Perl版本,直接从Perl脚本执行此操作会更好,更容易。

参考文献:

答案 2 :(得分:2)

if perl -MJSON::Any -e 'print "$JSON::Any::VERSION\n"' >/dev/null 2>&1
then : OK
else echo "Cannot find a perl with JSON::Any installed" 1>&2
     exit 1
fi

我经常使用“${PERL:-perl}”和类似结构来识别命令(针对awk vs nawkgawk; troff vs {{1} };等等。

如果要测试JSON :: Any的版本,请从命令中捕获输出。 如果您想测试Perl的版本,请添加“groff”或您认为合理的任何数字。 (不久之前,他们最终在工作中从一个NFS挂载的文件系统中删除了Perl 4 - 但这不是机器上唯一的Perl - 至少,不是在过去的十年或更长时间!)< / p>

相关问题