2009-08-01 14 views
5

मैं प्री-5.10.0 दस्तावेज़ों और हाल ही में version मॉड्यूल के बीच विवादित सलाह से थोड़ा उलझन में हूं। Perl Best Practices यह बहुत स्पष्ट करता है कि संस्करण तार ('v1.0.3') बुरा कर रहे हैं और एक एक संस्करण निर्दिष्ट करने के रूप में निम्नानुसार माना जाता है:पर्ल में पैकेज संस्करण कैसे निर्दिष्ट करते हैं?

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

लेकिन संस्करण मॉड्यूल का कहना है कि हम संस्करण तार का उपयोग करके वापस कर रहे हैं:

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

से आपका उद्धरण पर्ल सर्वोत्तम अभ्यास बिल्कुल सही नहीं है। विशेष रूप से, प्रपत्र

our $VERSION = v1.0.3; 

की नंगे vstrings हतोत्साहित किया जाता है। ,

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

यह कार्यक्षमता पठनीयता सहायता करने के लिए जोड़ दिया गया है, जबकि विशेष रूप से नंगे तार के जाल से बचने के here वर्णित: version.pm के नवीनतम संस्करण में, सिफारिश सच तार का प्रयोग है।

डॉक पेज आप से संबंद्ध हैं कहते हैं, आप पहले से लंबित 'वी' Perl 5.10 में निर्मित तर्क का उपयोग किए बिना संस्करणों का उपयोग कर सकते हैं:

आप एक मॉड्यूल एक दशमलव $ का उपयोग करता है है, तो संस्करण (फ़्लोटिंग पॉइंट), और आप कभी भी इसे बदलने का इरादा नहीं रखते हैं, यह मॉड्यूल आपके लिए नहीं है। ऐसा कुछ भी नहीं है जो version.pm आपको एक साधारण $ संस्करण असाइनमेंट पर प्राप्त करता है।

तो आपके प्रश्न का उत्तर यह है: यदि आप नया कोड लिख रहे हैं जो संस्करण.pm का उपयोग करता है तो नया "v1.0.3" वाक्यविन्यास का उपयोग करें। यदि आपका पुराना कोड लिखा गया था, या यदि आप मॉड्यूल.pm पर स्पष्ट रूप से निर्भर नहीं करना चाहते हैं तो एक सादे संख्या पर चिपके रहें।

+2

नवीनतम सुसमाचार यह है कि फ़ॉर्म का vstrings v1.0.3 जैसा कि आप उपरोक्त देते हैं ठीक है लेकिन वास्तव में फॉर्म 1.0.3 (दो दशमलव, नहीं v) के बराबर बनाम बुराई, बुराई, बुराई हैं। यह सीधे perl5-porters से है। – tsee

संबंधित मुद्दे

 संबंधित मुद्दे