2009-12-10 17 views
16

यह कह पर्ल का कौन सा संस्करण हम अपने लिपियों के लिए, हम मिल गया है विकल्प, ओह, भाई, हम मिल गया है विकल्प की जरूरत होती हैं, तब:पर्ल के किस संस्करण का उपयोग करने के लिए यह घोषणा करने का आधुनिक तरीका क्या है?

use 5.010; 
use 5.010_001; 
use 5.10.0; 
use v5.10; 
use v5.10.0; 

सभी काम करने के लिए लग रहे हैं। पहले दो लेकिन सभी के बारे में perlcritic शिकायतें। (यह दुर्भाग्यपूर्ण है कि वी स्ट्रिंग्स में ऐसी त्रुटियां प्रतीत होती हैं, क्योंकि पर्ल 6 आपको अपनी पर्ल 6 स्क्रिप्ट के लिए use v6; करने की अपेक्षा करता है ...)

तो, हमें यह इंगित करने के लिए क्या करना चाहिए कि हम किसी विशेष का उपयोग करना चाहते हैं पर्ल का संस्करण?

+0

यह भी देखें http://stackoverflow.com/questions/1216113/how-do-you-specify-a-package-version-in-perl – Ether

+0

संबंधित लेकिन निश्चित रूप से "डुप्लिकेट" का प्रकार जिसे हम चाहते हैं, उन्हें पूरी तरह से अलग तरीके से पूछा जाता है। –

उत्तर

7

वास्तव में केवल दो विकल्प हैं: दशमलव संख्याएं और v-तार। उपयोग करने के लिए कौन सा फॉर्म इस बात पर निर्भर करता है कि पर्ल के कौन से संस्करण आप वाक्यविन्यास त्रुटि के बजाय एक सार्थक त्रुटि संदेश के साथ "समर्थन" करना चाहते हैं। (वी-स्ट्रिंग वाक्यविन्यास पर्ल 5.6 में जोड़ा गया था।) स्वीकार्य सर्वोत्तम अभ्यास - जो कि परिक्रमात्मक प्रभाव है - दशमलव नोटेशन का उपयोग करना है। आपको पर्ल का न्यूनतम संस्करण निर्दिष्ट करना चाहिए जो आपकी स्क्रिप्ट के लिए सही तरीके से व्यवहार करने के लिए आवश्यक है। आम तौर पर इसका मतलब है कि एक प्रमुख रिलीज में जोड़े गए भाषा सुविधाओं पर निर्भरता घोषित करना, जैसेफ़ंक्शन का उपयोग 5.10 में जोड़ा गया है। यदि आपकी स्क्रिप्ट के लिए सही तरीके से व्यवहार करना महत्वपूर्ण है तो आपको पैच स्तर शामिल करना चाहिए। उदाहरण के लिए, मेरे कुछ कोड use 5.008001 निर्दिष्ट करते हैं क्योंकि यह 5.8.0 में तय किया गया था कि एक बग के लिए फिक्स पर निर्भर करता है।

5

"आधुनिक" तरीका v से शुरू होने वाले फॉर्मों का उपयोग करना है। हालांकि, यह आवश्यक नहीं हो सकता है कि आप वास्तव में क्या करना चाहते हैं।

आलोचनात्मक शिकायतें क्योंकि पर्ल के पुराने संस्करण v से शुरू होने वाले रूपों के साथ अच्छी तरह से समझ नहीं पाएंगे और अच्छी तरह से खेलेंगे। हालांकि, पर्ल के अपने संस्करण में यह समर्थन करता है तो, v अच्छे है पढ़ने के लिए है क्योंकि आप कह सकते हैं: use के लिए

use v5.10.1; 

... बजाय ...

use 5.010_001; 

तो, दस्तावेज में, निम्नलिखित वैकल्पिक हल की पेशकश की है:

use 5.006; use v5.6.1; 

एनबी:मुझे लगता है कि documenation यहाँ कोई त्रुटि है तो v को perldoc use पर उदाहरण से छोड़ा गया है।

पर्ल के संस्करण जो v वाक्यविन्यास का समर्थन नहीं करते हैं, पहले use पर असफल हो जाएंगे, वे दूसरे और विशिष्ट और पठनीय नहीं होंगे।

+3

v वैकल्पिक है जब 3 या अधिक भागों निर्दिष्ट हैं – ysth

+0

@ysth: निश्चित रूप से, लेकिन लीड-इन पैराग्राफ 'v' तारों का उपयोग करने के बारे में बात करता है, और फिर उदाहरण के बिना' v' को छोड़ देता है कि वे वैकल्पिक हैं। यह वैध कोड है लेकिन यह लीड-इन से मेल नहीं खाता है। –

7

मैं बस 5.010_001 जैसे कुछ का उपयोग करता हूं। मैं कुछ ऐसी चीज के लिए वर्जन स्ट्रिंग समस्याओं से निपटने से थक गया हूं जो दिमागी-सरल सरल होना चाहिए।

चूंकि मैं ज्यादातर बिल्ड सिस्टम के साथ सौदा करता हूं, मेरे पास Module::Build का आंतरिक version.pm का निरंतर संघर्ष है जो सीपीएएन पर version.pm के साथ समन्वयित नहीं है। मुझे लगता है कि अब यह अधिक बेहतर है, लेकिन मेरे पास सोचने के लिए बेहतर चीजें हैं।

सबसे अच्छा अभ्यास हमेशा उस चीज को करना चाहिए जो कम से कम आपके ध्यान का आदेश देता है, और निश्चित रूप से वापस दिए गए मूल्य से अधिक ध्यान नहीं लेता है।मेरी राय में, वी-स्ट्रिंग्स और बिंदीदार दशमलव किसी भी अतिरिक्त लाभ के साथ एक बड़ा व्याकुलता नहीं था, जो शुरुआती बिंदु पर वापस जाने के लिए बहुत मूल्यवान प्रोग्रामर समय बर्बाद कर रहा था।

मुझे यह भी ध्यान रखना चाहिए कि पर्ल :: आलोचना अक्सर लोगों द्वारा किए जाने वाले तरीकों को कम करने के उच्च उद्देश्य के लिए संदिग्ध प्रथाओं को धक्का दे रही है। हालांकि, उन प्रथाओं में अक्सर समस्याएं होती हैं, उन्हें सर्वश्रेष्ठ बनाती हैं। यह उन मामलों में से एक है। एक और यथार्थवादी सर्वोत्तम अभ्यास पर्ल :: आलोचना आपके लक्ष्य को अनुपालन नहीं करना है। इसका उपयोग करें जहां यह उपयोगी है, लेकिन इस तरह के मामलों में, उस पर मानसिक समय बर्बाद न करें।

+0

महान अंतर्दृष्टि, धन्यवाद। –

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

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