2010-08-28 16 views
37

मैं पर्ल के लिए नया हूँ, और मैं उन्हें इस

$_

foreach (@list) { 
    print "$_\n"; 
} 

@_

sub search { 
    my ($no, @list) = @_; 
} 

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

+15

[perldoc perlvar] (http://perldoc.perl.org/perlvar.html), [perldoc perlsyn] (http://perldoc.perl.org/perlsyn.html) – Ether

+17

ऐसा लगता है जैसे आप कर सकते हैं StackOverflow उत्तरों की तुलना में perl आवश्यक के लिए एक परिचय के बहुत अधिक उपयोग। क्या आप http://learn.perl.org/ पर गए हैं? वहां पर संसाधन हैं जिनमें आधिकारिक पर्ल दस्तावेज़, पर्ल पुस्तकें (पर्ल मुफ्त ऑनलाइन शुरू करने सहित) और उच्च गुणवत्ता वाले ऑनलाइन ट्यूटोरियल शामिल हैं। – hobbs

उत्तर

45

यह सवाल है जो आपको इंगित करता है कि वास्तव में एक पुस्तक पढ़ना चाहिए, और शायद शेष पर्ल टैग faqs होना चाहिए।

फिर भी, $_ एक संदर्भ चर है जो निश्चित रूप से कुछ संरचनाओं द्वारा बनाई गई है और कुछ अंतर्निहित कार्यों द्वारा इसका उपयोग किया जाता है। यहाँ कुछ उदाहरण हैं:

while(<>) { 
    next if /^#/; 
    last if /^q(?:uit)?$/; 
    say "Howdy!" if /^hello$/; 
} 

इस काम की स्थापना की एक बहुत कुछ कर और $_ चर निरीक्षण और के बराबर है:

while(defined($_ = <>)) { 
    next if $_ =~ /^#/; 
    last if $_ =~ /^q(?:uit)?$/; 
    say "Howdy!" if $_ =~ /^hello$/; 
} 

अन्य निर्माणों जो $_ सेट कर रहे हैं: foreach छोरों, given ब्लॉक, map और grep संचालन, और catchTry::Tiny में ब्लॉक।

अन्य निर्माणों जो $_ का उपयोग कर रहे हैं: नंगे print; बयान, s/// प्रतिस्थापन ऑपरेटर और tr/// लिप्यंतरण ऑपरेटर।

मैं यह सलाह दूंगा: जब आप पर्ल सीख रहे हों, तो $_ का उपयोग न करें। वास्तव में क्या चल रहा है अपने दिमाग में मजबूती के लिए, इसे पूरी तरह से बाहर लिखें (ऊपर दिए गए दूसरे उदाहरण में)। जैसे ही आप एक विदेशी भाषा सीख रहे हों, आपको सीखने से पहले ठीक से और ध्यान से बात करना सीखना चाहिए। $_ छोटे, छोटे कोड को लिखने के लिए उपयोगी है, और वास्तव में किए जाने वाले चर के बजाए प्रसंस्करण पर ध्यान केंद्रित करके स्पष्ट हो सकता है, लेकिन केवल एक बार जब आप दूसरी प्रकृति के रूप में सीख चुके हैं जो ऑपरेशन $_ का उपयोग कर रहे हैं। अन्यथा यह सिर्फ एक भ्रमित गड़बड़ है।

जैसा कि अन्यत्र उल्लेख किया गया है, @_ एक सबराउटिन की तर्क सूची है।

+4

जैसा कि ओपी ने देखा है, कभी-कभी 'प्रिंट' की निहित कॉल मदद नहीं करती है अगर किसी को बाद में एक नई लाइन जोड़ने की आवश्यकता होती है। न्यूर पर्ल के पास 'कहना' आदेश है जो '$ _' पर कार्य कर सकता है लेकिन आपके लिए एक नई लाइन जोड़ता है। सक्षम करने के लिए 'सुविधा' का उपयोग करें 'या' 5.10.0' का उपयोग करें। फिलिप, मुझे पता है कि आप इसे जानते हैं क्योंकि यह आपके उदाहरण में है, मैं सिर्फ पूर्णता के लिए कह रहा था। –

+0

फ़ाइल :: ढूंढें :: ढूंढें '$ _' भी सेट करता है; मुझे यकीन नहीं है कि मैं ऐसे मॉड्यूल सूचीबद्ध करूंगा जो यहां $ _ सेट करते हैं; वे "संरचनाएं" नहीं हैं। – ysth

+1

आपकी 'पुस्तक' लिंक अब मर चुका है। – Ruslan

4

वे पर्ल में विशेष चर हैं। Perl - Special Variables का संदर्भ लें।

+0

यह सूचीबद्ध नहीं है @_ – nmz787

+1

एक बेहतर संदर्भ http://perldoc.perl.org/perlvar.html होगा – Flimm

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