2010-11-04 9 views
14

मैं => ऑपरेटर के हैश उपयोग के बारे में पता है, like thisडबल तीर (=>) ऑपरेटर पर्ल में कैसे काम करता है?

$ cat array.pl 
%ages = ('Martin' => 28, 
     'Sharon' => 35, 
     'Rikke' => 29,); 

print "Rikke is $ages{Rikke} years old\n"; 
$ perl array.pl 
Rikke is 29 years old 
$ 

और मैंने सोचा कि यह हैश प्रारंभ करने में सिर्फ वाक्य रचना था, लेकिन How can I qualify a variable as const/final in Perl? के जवाब में, => इस

use Readonly; 
Readonly my $infilename => "input_56_12.txt"; 
की तरह इस्तेमाल किया गया है

=> का वास्तव में क्या मतलब है? क्या ऐसे कई तरीके हैं जिनमें => का उपयोग किया जा सकता है?

+5

कृपया प्रलेखन पढ़ें। आपको [perldoc perlop] (http://perldoc.perl.org/perlop.html) के लिए स्वचालित रूप से पहुंचा जाना चाहिए था, जहां आप इसे पोस्ट करने से पहले ऑपरेटरों पर जानकारी पाई जा सकती है, और फिर आप स्पष्टीकरण प्रश्न पूछ सकते हैं आपको। यह वास्तव में बहुत ही परेशान हो रहा है कि दस्तावेज़ीकरण से उद्धृत इतने सारे उत्तर हैं - यह ज्ञान नहीं जोड़ रहा है। – Ether

+6

पर्याप्त मेला। मेरी रक्षा में, मैंने Google किया, जिसने '=>' के लिए खोज को खारिज कर दिया। – Lazer

+2

लेकिन आपकी रक्षा के खिलाफ, आप इसके बाद स्पष्ट रूप से छोड़ दिया। –

उत्तर

28

=> ऑपरेटर पेर्ल में मूल रूप से कॉमा जैसा ही है। केवल अंतर यह है कि यदि बाईं ओर एक निर्विवाद शब्द है, तो इसे उद्धृत शब्द की तरह माना जाता है। तो आप Martin => 28 लिख सकते थे जो 'Martin', 28 जैसा ही होगा।

आप किसी भी लंबाई की सूची से हैश बना सकते हैं, जो आप अपने उदाहरण में कर रहे हैं।

आपका रीडोनली उदाहरण पेरेंट की लचीलापन का लाभ ले रहा है, जो ब्रांड्स को छोड़कर सबराउटिन तर्कों के साथ लचीलापन का लाभ उठा रहा है। यह Readonly(my $infilename, "input_56_12.txt") के बराबर है। रीडोनली रीडोनली मॉड्यूल द्वारा निर्यात किया गया एक फ़ंक्शन है जो दो तर्क लेता है: एक संदर्भ, और एक मान। यदि आप उन्हें समझना चाहते हैं तो रीडोनली के आंतरिक दूसरे प्रश्न के योग्य हैं।

$ perl -e 'print hello => "world\n"' 
helloworld 
+0

तो, 'मेरे $ infilename => "input_56_12.txt" को क्या पढ़ता है; क्या करें? – Lazer

+0

यह सिर्फ एक अल्पविराम है। आप इसे फिर से लिख सकते हैं: 'केवल पढ़ने के लिए (मेरा $ infilename, "input_56_12.txt"); '। रीडोनली मॉड्यूल (निरंतर विकल्प) पर और जानकारी के लिए, कृपया http://search.cpan.org/perldoc?Readonly देखें –

24

से perlop:

यहाँ एक अप्रत्याशित तरीके से एक अल्पविराम के रूप में उपयोग का एक उदाहरण है

=> ऑपरेटर कि छोड़कर अल्पविराम के लिए एक पर्याय वह अपने कारण बनता है ऑपरेशन को स्ट्रिंग के रूप में व्याख्या करने के लिए कहा जाता है यदि यह किसी पत्र या अंडरस्कोर से शुरू होता है और केवलसे बना हैअक्षर, अंक और अंडरस्कोर

यह ऑपरेंड कि अन्यथा ऑपरेटरों, स्थिरांक, एकल संख्या v-तार या फ़ंक्शन कॉल के रूप में माना जा सकता है भी शामिल है। यदि इस व्यवहार के बारे में संदेह है, तो बाएं ऑपरेंड स्पष्ट रूप से उद्धृत किया जा सकता है।

अन्यथा, => ऑपरेटर व्यवहार करता है जैसे कि अल्पविराम ऑपरेटर या तर्क विभाजक की सूची संदर्भ के अनुसार।

उदाहरण के लिए:

use constant FOO => "something"; 
my %h = (FOO => 23); 

बराबर है करने के लिए:

my %h = ("FOO", 23); 

यह नहीं है:

my %h = ("something", 23); 

=> ऑपरेटर में सहायकके बीच पत्राचार का दस्तावेजीकरण है हैश मेंकुंजी और मान, और अन्य सूचियों में जोड़े गए तत्व

%hash = ($key => $value); 
login($username => $password); 

से PBP:

मैं से पर्ल उत्तम आचरण कुछ अच्छी जानकारी के बारे में फैट अल्पविराम पाया है=> और मुझे लगता है कि यह यहाँ पर उल्लेख करने के लिए अच्छा होना चाहिए भी। जब एक हैश निर्माण

यह प्रयोग करें:

my %h = (FOO => 23); 

या जब एक सबरूटीन यानी करने के लिए नामित तर्क गुजर -:

यह वसा निम्नलिखित बातें लिए विशेष रूप से अल्पविराम को आरक्षित करना बेहतर है। ,

$text = format_text({FOO => 23, BAR => 30}); 

या सी एक निरंतर reating:

Readonly my $FOO => "23"; 

अधिक विस्तार के लिए देख Chapter4: मान और भाव (फैट अल्पविराम) पर्ल उत्तम आचरण की धारा।