私は Perl スクリプトを作成しました。すべての人に配布したいので、ユーザーの環境をテストし、その環境が Perl スクリプトを実行できるかどうかを調べるために使用される bash スクリプトを作成する予定でした。
次のようなことをテストしたい:
- Perl がそのシステムにインストールされているかどうか
- Perl にはバージョン 5 以上が必要です
- モジュール JSON::Any が利用可能かどうか
どんな提案でも大歓迎です:-)
私は Perl スクリプトを作成しました。すべての人に配布したいので、ユーザーの環境をテストし、その環境が Perl スクリプトを実行できるかどうかを調べるために使用される bash スクリプトを作成する予定でした。
次のようなことをテストしたい:
どんな提案でも大歓迎です:-)
いいえ、シェルスクリプトを記述しないでください。Perlには、これを行うための完全に優れた方法がすでにあります。これを行う正しい方法は、通常のツールチェーンを使用してCPAN対応のディストリビューションを構築することです。この一部は、perlnewmod、perlmodstyle、および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を読む必要があります。
時間がある場合は、スクリプトをモジュールに変換することをお勧めします。プログラムpl2pm(Perlに付属)とCPANモジュールModule-Starter-PBPが役に立ちます。
ライセンスが許可されている場合は、コードをCPANにアップロードして、ユーザーにとってさらに便利にすることができます。最初に次の場所のいずれかで助けを求めてください:メーリングリストmodule-authors@perl.org、Webフォーラム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コードは、perl5.6.1以降およびmodele"ModuleName"バージョン2.0以降でのみ実行されます。bashからPerlのバージョンを手動でチェックする必要はありません。Perlスクリプトから直接チェックする方が簡単です。
参照:
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
vsnawk
またはgawk
; troff
vs groff
;など)。
JSON :: Anyのバージョンをテストする場合は、代わりにコマンドからの出力をキャプチャします。Perlのバージョンをテストしたい場合は、' use 5.008009;
'または適切と思われる数値を追加してください。(NFSマウントされたファイルシステムの1つからPerl 4を最終的に削除したのはそれほど昔のことではありませんが、少なくとも過去10年以上は、このマシン上のPerlはそれだけではありませんでした!)