2009-09-04 12 views
5

एक स्क्रिप्ट पर्ल के कम से कम संस्करण एक्स है सुनिश्चित करने के लिए आप कर सकते हैं निम्नलिखितमैं कैसे जांच सकता हूं कि एक perl संस्करण कुछ मूल्य से अधिक नहीं है?

require 5.6.8; 

जांच करते हुए कि एक संस्करण भी नया नहीं है का सबसे अच्छा तरीका क्या है? (यानी ठीक है तो संस्करण 5.8.x, लेकिन 5.9 या 5.10 ठीक नहीं हैं)।

+3

मुझे पता है जो संदर्भ में इस उपयोगी होगा उत्सुक होगी। पिछली संगतता को संरक्षित रखने के लिए पर्ल अपने रास्ते से बाहर निकलता है। –

+0

@ जेबी एक सैद्धांतिक कारण: पर्ल के बाद के संस्करणों में अप्रत्याशित बग हो सकती है। उदाहरण के लिए, 5.10.0 में qr // से संबंधित स्मृति रिसाव था। कुछ लॉक डाउन वातावरण में ज्ञात बग के साथ एक पुराना संस्करण अज्ञात बग के साथ एक नए संस्करण से सुरक्षित है। –

+1

मेरे मामले में, मेरे पास एक प्रणाली है जिसमें संकलित पुस्तकालयों का एक गुच्छा शामिल है जो perl 5.10 पर काम नहीं करेगा। सिस्टम स्थिरता के बारे में सोचने के लिए –

उत्तर

23

इस कोड को मर जाएगा अगर पर्ल का संस्करण है 5.8.9 से अधिक:

die "woah, that is a little too new" unless $] <= 5.008009; 

आप perldoc perlvar में $] अधिक के बारे में पढ़ सकते हैं।

8

आप संस्करण की जांच के लिए विशेष $^V चर का उपयोग कर सकते हैं। perldoc perlvar से:

$^V 

The revision, version, and subversion of the Perl interpreter, represented as a 
version object. 

This variable first appeared in perl 5.6.0; earlier versions of perl will see an  
undefined value. Before perl 5.10.0 $^V was represented as a v-string. 

आप एक स्ट्रिंग तुलना, उदा $^वी उपयोग कर सकते हैं

if ($^V lt 'v5.10.0') 

आप 5.6.0 से पहले एक पर्ल चला रहे हैं, तो आप $] जो एक सरल पूर्णांक रिटर्न का उपयोग करना होगा।

+0

मुझे नहीं लगता कि स्ट्रिंग तुलना संस्करण.pm के बिना काम करेगी (5.6+ पर्ल के कई संस्करणों में जरूरी नहीं है)। क्या आपका मतलब था ($^वी लेफ्टिनेंट v5.10.0)? मुझे $^वी $ से अधिक का पक्ष लेने का कोई कारण नहीं दिख रहा है]। – ysth

+3

यदि आप पुरानी perls का उपयोग करने की कोशिश कर रहे हैं, तो यह जाने का रास्ता नहीं है। –

0

सरल समाधान यह करने के लिए होगा:

no 5.010; 
+2

वास्तव में काम नहीं करता है: 'no 5.011' आज़माएं और आपको एक त्रुटि मिलेगी कि 'फीचर बंडल" 5.11.0 "पर्ल 5.10.0' द्वारा समर्थित नहीं है। बल्कि टूट गया .... – derobert

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