2013-02-24 44 views
8

मेरे पास मेरी मशीन में 5.14.2 स्थापित है लेकिन जब मैं say कीवर्ड के साथ एक प्रिंट स्टेटमेंट निष्पादित करने का प्रयास करता हूं तो यह मुझे त्रुटि देता है।मुझे "उपयोग सुविधा: 5.1x" निर्दिष्ट क्यों करना है जब भी मेरा स्थापित perl 5.14 है?

मैं उपयोग कीवर्ड के साथ जाने के बिना किसी त्रुटि के कार्यक्रम को चलाने के लिए है।

#!/usr/bin/perl 
use feature ':5.10'; 
say "hello"; 

5.14.2 5.010 की तुलना में नवीनतम है तो क्या यह डिफ़ॉल्ट रूप से सक्षम सभी सुविधाएं होनी चाहिए? तो use कीवर्ड का उपयोग कर संस्करण निर्दिष्ट करने में क्या बात है?

उत्तर

5

यह पर्ल में लिखे मौजूदा कार्यक्रमों के साथ संघर्ष से बचाता है।

उदाहरण के लिए, कहते हैं कि मैं जो एक सबरूटीन say बुलाया परिभाषित पर्ल 5.6 के लिए एक कार्यक्रम लिखा था।

use strict; 
use warnings; 
sub say { print 1; } 
say(); 

कि ठीक काम करता है (outputting), और यह अभी भी पर्ल्स कि say सुविधा शामिल में काम करता है।

अब देशी say सक्षम हैं और देखते हैं क्या होता है:

use v5.14; 
use strict; 
use warnings; 
sub say { print 1; } 
say(); 

अब यह अप्रारंभीकृत मूल्य $ के * उपयोग के साथ खत्म हो गया हो जाता है _ में कहते हैं पर - लाइन 5. *

आप use feature करने की जरूरत है या use v5.xx ताकि नई सुविधाओं को सुरक्षित रूप से लोड किया जा सके, यानी जब लेखक जानता है कि वह उनका उपयोग करना चाहता है।

+0

इसका मतलब है कि पर्ले के किसी भी नवीनतम संस्करण के बावजूद, यह सब एक आम तरीके से काम करने जा रहा है जबतक कि आप निर्दिष्ट नहीं करते कि कौन सा संस्करण उपयोग करना है। और एक बार जब आप संस्करण निर्दिष्ट करते हैं तो यह आपके लिए उन सुविधाओं को सक्षम करने जा रहा है। तो क्या इसका मतलब है कि मेरा 5.8 और 5.10 संस्करण 'उपयोग' कमांड सुविधा के बिना समान होने जा रहे हैं – chidori

+0

यह मूल विचार है, हां। हालांकि, सुविधा या संस्करण का उपयोग केवल नई सुविधाओं को सक्षम करने के लिए है। बग या गलत सुविधाओं को कभी-कभी बहिष्करण चक्र के साथ हटा दिया जाता है। तो, 5.8 में चेतावनी क्या थी 5.10 में विफलता हो सकती है। – stu42j

10

पर्ल पिछड़ा संगतता बनाए रखने का प्रयास करता है। यह काफी संभव है कि मौजूदा स्क्रिप्ट में say नामक सबराउटिन हो सकते हैं। पर्ल के भविष्य के संस्करण को इन प्रयासों को रोकना चाहिए और इसके आंतरिक को सुव्यवस्थित करना चाहिए या नहीं, इस बारे में काफी चर्चा चल रही है। उदाहरण के लिए, naming and numbering perl देखें।