端末出力のカラー化を行うPerlスクリプトでTerm::ANSIColor
を使用していて、変更ログに基づいてTerm::ANSIColor
バージョン2.01で追加されたcolorstrip
関数を使用しています。だから、少なくともTerm::ANSIcolor
のバージョンを見つけることができない場合、私のスクリプトを自動的にdie
に適切なエラーメッセージを表示する方法はありますか?perlスクリプトで特定のバージョン(またはそれ以上)のperlモジュールを使用するにはどうすればよいですか?
答えて
:
use Term::ANSIColor 2.01;
がperldoc -f use
を参照してください:
使用モジュールのバージョンリスト
VERSION引数はモジュールとLISTの間に存在する場合、その使用が呼び出します指定されたバージョンを引数としてModuleクラスのVERSIONメソッドを呼び出します。 UNIVERSALクラスを継承したデフォルトのVERSIONメソッドは、指定されたバージョンが変数$ Module :: VERSIONの値より大きい場合に機能します。
ほとんどのモジュールでは、パッケージ変数$VERSION
が定義されています。
use Term::ANSIColor;
die "Sorry, this program needs Term::ANSIColor >= v2.01!\n"
unless $Term::ANSIColor::VERSION >= 2.01;
これは、モジュールの最大バージョンを指定するための良い方法です。ただ、
use Module::Foo;
die "You need an *older* version of Module::Foo that ",
"still has the &barbaz method defined"
if $Module::Foo::VERSION >= 0.47;
だけで、使用したいバージョンを指定:バージョンが少なくとも2.13でない場合、操作は失敗します
use Some::Module 2.13;
を。
あなたは、コマンドラインで提供されていたバージョンを試すことができます。
perl -MSome::Module=9999 -e 'exit 0'
これは通常、使用しようとしているモジュールが起こっていない限り(エラーメッセージに示されている間違ったバージョン番号で死んでしまいます5桁以上のバージョン番号を持つか、またはモジュールがstrict
のようなもので、バージョン番号などのコマンドラインでロードされたくない場合はURI
(詳細はコメントを参照してください))。
$ perl -MFile::Find=999 -e 'exit 0'
File::Find version 999 required--this is only version 1.07 at
/usr/perl5/5.8.4/lib/Exporter/Heavy.pm line 121.
BEGIN failed--compilation aborted.
$ perl -e 'use File::Find 999; exit 0'
File::Find version 999 required--this is only version 1.07 at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
$
マシンで実行します。通常は使用しません。したがって、古いバージョンのPerlです。
2つは微妙に異なります。コマンドライン-Mスイッチは使用するVERSIONを決して指定しません。モジュールのインポートルーチンにパラメータとして供給し、Exporterを使用するモジュールはバージョンチェックを行います。しかし、すべてのモジュールがExporterを使用するわけではありません。 – ysth
これはすべてのモジュールで確実に動作するわけではないので、一般的な方法ではありません。 –
@ysthと@brian:OK - 私はあなたの言葉を受け取ります。私はCPANのすべてのモジュールで試してみませんでしたが、バージョン番号の問題に遭遇した唯一の時間は、信頼できる独自のバージョンを設定していないメインモジュールのサブモジュールです。モジュールのインスタンスまたは2つが動作しない場所に与えることはできますか? –
- 1. あるPerlスクリプトから別のPerlスクリプトに引数を渡すにはどうすればよいですか?
- 2. Perlのネストされたハッシュで特定のキーにアクセスするにはどうすればよいですか?
- 3. 実行中のPerlセッション内でPerlスクリプトをコンパイルするにはどうすればよいですか?
- 4. 別のバージョンのopensslをperlで使用するにはどうすればよいですか?
- 5. スタンドアロンのPerlスクリプトでMojoliciousレンダリングを使用するにはどうすればよいですか?
- 6. Dist:Zilla dist.iniで配布用の最小Perlバージョンを指定するにはどうすればいいですか?
- 7. ハッシュ(またはその要素)をperlで印刷するにはどうすればよいですか?
- 8. Try :: Tinyを使用してPerlスクリプトでpod2usage exitを「キャッチ」するにはどうすればよいですか?
- 9. PDF :: API2 Perlモジュールでテキストの背景色を設定するにはどうすればよいですか?
- 10. ログオフ後、Unix上でPerlスクリプトを実行するにはどうすればよいですか?
- 11. Perlプログラム内でcURLまたはWgetを使用するにはどうすればよいですか?
- 12. Windows上でどのバージョンのPerlを使うべきですか?
- 13. jQueryブラーイベントを使用してPerlスクリプトにAJAX要求を行うにはどうすればよいですか?
- 14. PerlでImage :: Magicで特定のピクセルのRGB値を増やすにはどうすればよいですか?
- 15. Ant execタスクを使用してPerlスクリプトを実行するにはどうすればよいですか?
- 16. PythonスクリプトでPerlスクリプトの結果を取得するにはどうすればよいですか?
- 17. Perlスクリプトで使用されているすべてのモジュールを見つけてインストールするにはどうすればよいですか?
- 18. Perl 5.004でPerl/TK GUIの外観を改善するにはどうすればよいですか?
- 19. Perlモジュールをアップロードする前に、Perlモジュールのクワルテ出力をどのようにして得られますか?
- 20. Perlコアのモジュールでバグの履歴を確認するにはどうすればよいですか?
- 21. セレンでテストを書くために使うperlモジュールはどれですか?
- 22. Perlで冗長コードを特定して削除するにはどうすればよいですか?
- 23. Windows上でXAMPP上でPerlファイルを実行するにはどうすればよいですか?
- 24. Perl SVN :: Clientでペグリビジョンを使うにはどうすればいいですか?
- 25. MySQLを使用してperlで接続プーリングを使用するにはどうすればよいですか?
- 26. PerlでCSSを検索するにはどうすればよいですか?
- 27. インストール済みのApacheモジュールをPerlでチェックするにはどうすればよいですか?
- 28. ディレクトリ内のファイルのバージョン管理のようなPerlスクリプトまたはモジュール?
- 29. Perlスクリプトでスウェーデンのタイムゾーンに日付を変更するにはどうすればよいですか?
- 30. WindowsでPerlプログラムのメモリ使用量をプログラムで確認するにはどうすればよいですか?
これは良い方法です。インポートリストでバージョンを指定すると、実際にこれを処理するインポートメソッドに依存します。それだけでなく、インポートの手法ではそのバージョン以降が必要です。特定のバージョンやバージョンの範囲が必要な場合は、このより一般的な手法になります。 –
実際には、 'import'メソッドから必要な助けはありません。バージョン番号で' use'または 'require'を使うと、' VERSION'メソッドに呼び出しが生成されます。しかし、特にそれを上書きしないパッケージはすべて、 'UNIVERSAL'から適切な' VERSION'メソッドを取得します。 – hobbs
@brianはおそらく前のメッセージであなたにタグを付けていたはずですので、今私はです:) – hobbs