2009-08-01 17 views
5

私は、5.10.0より前のドキュメントとより最近のversionモジュールの間で相反するアドバイスによってちょっと混乱しています。Perlでどのようにパッケージのバージョンを指定しますか?

use version; our $VERSION = qv('1.0.3'); 

が、バージョンモジュールは、我々はバージョン文字列を使用するように戻っていることを述べている:Perl Best Practicesは、バージョン文字列(「v1.0.3デベロッパー」)が不良であると次のように1バージョンを指定することになっていること、それはかなり明確になります:

use version 0.77; our $VERSION = qv("v1.2.3"); 

私たちは後退しましたか、これには理由がありますか?

+0

も参照してください。http://stackoverflow.com/questions/1878108/whats-the-modern-way-of-declaring-which-version-of-perl-to-use – Ether

答えて

8

よりPerlベストプラクティスは正しくありません。具体的には、フォーム

our $VERSION = v1.0.3; 

vstringsが推奨されます。特に裸の文字列の罠を避けるhereを説明しながら、この機能は、読みやすさを支援するために追加されました

use version 0.77; our $VERSION = qv("v1.2.3");    # shorthand 

:version.pmの最新バージョンでは、勧告は、真の文字列を使用することです。

あなたがにリンクされドキュメントのページでは、5.10の組み込みロジック用いて予備保留中の「V」なしのバージョンを使用することができ、言うように:あなたは小数の$を使用するモジュールを持っている場合は

をVERSION(浮動小数点)を使用していますが、これを変更するつもりはないので、このモジュールはあなたのためのものではありません。 version.pmが$ VERSIONの単純な割り当てよりも優れていることは何もありません。

あなたの質問に対する答えは、version.pmを使用する新しいコードを書く場合、新しい「v1.0.3」構文を使用することです。あなたの古いコードがどのように記述されたのか、あるいはmodule.pmに明示的に依存したくないのであれば、プレーンナンバーに固執してください。

+2

最新のゴスペルは、フォームのvstrings v1.0.3は上のように大丈夫ですが、1.0.3(2小数点、無しv)という形式の本当に大胆なvstringsは悪、悪、悪です。これはperl5-portersから直接得られたものです。 – tsee