Perl の可用性、そのバージョン、必要なモジュールの存在を確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2605545

  •  25-09-2019
  •  | 
  •  

質問

私はPerlスクリプトを書きました、私はそれをすべての人に与えたいだけです。そのため、ユーザーの環境をテストするために使用され、その環境がPerlスクリプトを実行できるかどうかを見つけるために使用されるBashスクリプトを書くことを計画していました。

次のようなことをテストしたいです。

  1. そのシステムに Perl がインストールされているかどうか
  2. Perl はバージョン 5 以降である必要があります
  3. モジュール JSON::Any が利用可能かどうか

何かご提案があれば大歓迎です:-)

役に立ちましたか?

解決

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}' およびコマンドを識別するための同様の構造体 ( awknawk または gawk; troffgroff;等)。

JSON::Any のバージョンをテストする場合は、代わりにコマンドからの出力をキャプチャします。Perl のバージョンをテストしたい場合は、「」を追加します。use 5.008009;' またはあなたが適切だと思う数字を入力してください。(職場で NFS マウントされたファイル システムの 1 つから Perl 4 が最終的に削除されたのは、それほど前のことではありません。しかし、マシン上の唯一の Perl ではありませんでした。少なくとも、過去 10 年以上では削除されていませんでした!)

他のヒント

いいえ、シェル スクリプトを作成しないでください。Perl には、これを行うための完璧な方法がすでにあります。これを行う正しい方法は、通常のツールチェーンを使用して CPAN 対応ディストリビューションを構築することです。この一部については、 パールニューモッド, パールモッドスタイル そして perlmodinstall.

最小限の作業例として、次のようにディレクトリ レイアウトを作成します。

.
├── 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 モジュールと同じようにインストールするようにユーザーに伝えます。あるいは、その意味がわからない場合は README を読むように伝えます。

時間があれば、スクリプトをモジュールに変換することをお勧めします。プログラム 午後2時 (Perl に付属) および CPAN モジュール モジュール-スターター-PBP 助けます。

ライセンスが許可する場合は、コードを CPAN にアップロードして、ユーザーにとってさらに便利にすることができます。まず次のいずれかの場所で助けを求めてください。メーリングリスト module-authors@perl.org, 、ウェブフォーラム PerlMonks, 、MagNET の IRC チャネル #toolchain (irc://irc.perl.org/toolchain)

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 スクリプトから直接確認するほうが適切で簡単です。

参考文献:

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top