Perl の可用性、そのバージョン、必要なモジュールの存在を確認するにはどうすればよいですか?
-
25-09-2019 - |
質問
私はPerlスクリプトを書きました、私はそれをすべての人に与えたいだけです。そのため、ユーザーの環境をテストするために使用され、その環境がPerlスクリプトを実行できるかどうかを見つけるために使用されるBashスクリプトを書くことを計画していました。
次のようなことをテストしたいです。
- そのシステムに Perl がインストールされているかどうか
- Perl はバージョン 5 以降である必要があります
- モジュール 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}
' およびコマンドを識別するための同様の構造体 ( awk
対 nawk
または gawk
; troff
対 groff
;等)。
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 スクリプトから直接確認するほうが適切で簡単です。
参考文献: