$this
, @that
, और %those
के बीच पर्ल में क्या अंतर है?
उत्तर
$this
यह धारण कई तरह ("apple", "orange", "pear")
%those
मूल्यों की एक हैश है, यह ("apple" => "red", "orange" => "orange", "pear" => "yellow")
जैसे प्रमुख मूल्य जोड़े रखती है, एक अदिश मूल्य, यह रखती है 1 apple
की तरह आइटम
@that
मूल्यों की एक सरणी है
पर्ल चर प्रकारों पर अधिक के लिए perlintro देखें।
perldoc वास्तव में काफी अच्छा है: http://perldoc.perl.org/perldata.html (या यदि आपके पास प्रलेखन स्थापित है, तो 'perldoc perldata' चलाएं) – Cascabel
साइड नोट: $ स्केलर मान अक्सर (संदर्भ) सरणी और हैंश (और कभी-कभी अन्य स्केलर) पर इंगित करने के लिए उपयोग किए जाते हैं। –
@ फ्रैंक - हाँ, वह और सरणी हैश के रूप में इस्तेमाल किया जाना चाहिए। मेरा पसंदीदा उप में है नामित पैरामीटर के साथ: 'मेरा ($ foo, $ bar) = @ {@_} {qw/foo bar /};' – amphetamachine
शायद आप perlintro
और perlsyn
दस्तावेज़ों को देखना चाहते हैं ताकि वास्तव में पर्ल को समझने के लिए शुरू किया जा सके (यानी, फ़्लिपिंग मैनुअल पढ़ें)। :-)
कहा कि:
$this
एक अदिश है, जो एक संख्या (पूर्णांक या नाव), एक स्ट्रिंग, या एक संदर्भ (नीचे देखें) स्टोर कर सकते हैं है,@that
एक सरणी है, जो स्केलर्स की एक आदेशित सूची संग्रहीत कर सकती है (ऊपर देखें)। आपpush
याunshift
कार्य (perlfunc
देखें) के साथ एक सरणी के लिए एक अदिश जोड़ सकते हैं, और आप शाब्दिक शृंखला बनाने के लिए अदिश शाब्दिक या चर का एक कोष्ठक-घिरा अल्पविराम द्वारा पृथक सूची का उपयोग कर सकते (यानी,my @array = ($a, $b, 6, "seven");
)%those
एक हैश है, जो एक सहयोगी सरणी है। हैश के पास प्रविष्टियों के प्रमुख मूल्य जोड़े हैं, जैसे कि आप इसकी कुंजी की आपूर्ति करके हैश के मूल्य तक पहुंच सकते हैं। हैश लिटरल को सूचियों की तरह भी निर्दिष्ट किया जा सकता है, सिवाय इसके कि प्रत्येक विषम प्रविष्टि एक कुंजी है और प्रत्येक भी एक मूल्य है। आप एक कुंजी और मूल्य को अलग करने के लिए अल्पविराम के बजाय=>
वर्ण का भी उपयोग कर सकते हैं। (अर्थात,my %ordinals = ("one" => "first", "two" => "second");
)
आम तौर पर, जब आप सरणियों पास या कॉल सबरूटीन के लिए हेश, अलग-अलग सूचियां एक लंबी सूची में चपटा कर रहे हैं। कभी-कभी वांछनीय होता है, कभी-कभी नहीं। बाद के मामले में, आप एकल सूची के संदर्भ को एक एकल स्केलर तर्क के रूप में संदर्भित करने के लिए संदर्भों का उपयोग कर सकते हैं। संदर्भों के वाक्यविन्यास और अर्थशास्त्र मुश्किल हैं, हालांकि, और इस उत्तर के दायरे से बाहर गिरते हैं। यदि आप इसे देखना चाहते हैं, हालांकि, perlref
देखें।
साइड नोट: पर्ल (प्री पर्ल 6) में, जब आप किसी तत्व को पुनर्प्राप्त करने के लिए किसी सरणी या हैश तक पहुंचते हैं, तो उस बिंदु पर '$ 'सिगिल है उस पहुंच के लिए इस्तेमाल किया; ऐसा इसलिए है क्योंकि जब आप किसी सरणी या हैश में खुदाई कर रहे हैं, तो आप वास्तव में क्या प्राप्त कर रहे हैं एक स्केलर है, और लैरी वॉल (पर्ल के निर्माता) का मानना है कि स्केलर सिगिल का उपयोग करने के लिए यह अधिक समझ में आया है कि यह मानने के लिए कि आप ' फिर से इस्तेमाल किया जा सकता है एक सामान्य स्केलर चर का उपयोग किया जा सकता है। पर्ल v5.20 में –
, आप एक [कुंजी-मूल्य स्लाइस] प्राप्त करने के लिए एक सरणी या हैश में '%' लागू कर सकते हैं (http://www.effectiveperlprogramming.com/2014/07/perl-5-20 -इंटरजेस-कीवल्यू-स्लाइस /) –
पर्ल sigils के लिए एक उपयोगी स्मरक हैं:
- calar
- @rray
- % राख $
Matt Troutblog.fogus.me पर एक बड़ा टिप्पणी लिखी पर्ल sigils जो मुझे लगता है के बारे में है उपयोगी है इसलिए नीचे चिपकाया गया है:
दरअसल, perl sigils वैरिएबल प्रकार को इंगित नहीं करते हैं - वे संयोग को दर्शाते हैं - $ 'the' है, @ 'इन',% 'का नक्शा' है या इसलिए - परिवर्तनीय प्रकार [] या {} के माध्यम से दर्शाया गया है।
my $foo = 'foo'; my @foo = ('zero', 'one', 'two'); my $second_foo = $foo[1]; my @first_and_third_foos = @foo[0,2]; my %foo = (key1 => 'value1', key2 => 'value2', key3 => 'value3'); my $key2_foo = $foo{key2}; my ($key1_foo, $key3_foo) = @foo{'key1','key3'};
तो sigil को देख जब पर्ल कोड स्कीम आपको बताता है कि आप क्या बल्कि आप क्या पर काम कर रहे हैं की तुलना में -get- लिए जा रहे हैं, काफी: आप के साथ देख सकते हैं।
यह स्वीकार्य रूप से, जब तक आप इसका उपयोग नहीं करते हैं, वास्तव में भ्रमित हो रहा है, लेकिन एक बार जब आप इसे इस्तेमाल करते हैं तो स्किमिंग कोड के दौरान जानकारी को अवशोषित करने के लिए यह एक बेहद उपयोगी टूल हो सकता है।
आप अभी भी पूरी तरह से निश्चित रूप से, यह नफरत के हकदार रहे हैं, लेकिन यह एक दिलचस्प अवधारणा है और मैं समझ :)
चल रहा था आप बल्कि आप क्या सोचा से नफरत करने के लिए क्या -actually- हो रहा है पसंद कर सकते हैं
इतनी दृढ़ता से सिग्नल को परिवर्तनीय प्रकारों से जोड़ना गलत है। यही कारण है कि बहुत से लोगों को उनके साथ समस्या है। "मैट" से पहले सबकुछ हटाने के लिए यह आपके लिए बेहतर होगा। –
@brian d foy: मुझे उद्धृत पोस्ट के साथ कुछ भी गलत नहीं दिख रहा है - यह मेरे लिए सही मायने रखता है, लेकिन फिर मैंने पर्ल को वास्तव में आसानी से उठाया। तो अगर आपके बारे में मुझसे कोई फर्क नहीं पड़ता है, तो इसके बारे में क्या यह आपके लिए एक बुरा उद्धरण बनाता है? –
मुझे लगता है कि आपने मेरी टिप्पणी में "पहले" शब्द को याद किया था। मैट की सामग्री "बाद" है। :) –
पर्ल का आविष्कारक एक भाषाविद था, और उसने पर्ल को "प्राकृतिक भाषा" की तरह बनाने की कोशिश की।
this post से:
अस्पष्टता दूर संख्या, केस और शब्द क्रम कारण एक भाषा कुछ स्थानीय अस्पष्टता के साथ भाग प्राप्त कर सकते हैं की
भाग द्वारा कि अन्य अस्पष्टता विभिन्न तंत्र द्वारा दबा दिया जाता है। अंग्रेजी सर्वनाम में एक केस सिस्टम के निवासी के साथ संख्या और शब्द आदेश का उपयोग करती है: "आदमी ने पुरुषों को देखा, और उन्होंने उसे वापस देखा।" यह उस वाक्य में पूरी तरह से स्पष्ट है जो किसके साथ कर रहा है। इसी प्रकार, पर्ल के नाम पर संख्या मार्कर हैं; यानी, $ कुत्ता एक पोच है, और @ डॉग (संभावित रूप से) कई हैं। तो $ और @ अंग्रेजी में में "यह" और "इन" की तरह थोड़ा हैं। [जोर जोड़ा गया]
और $ _ "यह" है। – AmbroseChapel
लोग अक्सर अलग-अलग प्रकार के सिग्लों को बांधने का प्रयास करते हैं, लेकिन वे केवल थोड़े से संबंधित हैं। यह एक विषय है जिसे हमने Learning Perl और Effective Perl Programming में बहुत कठिन मारा क्योंकि जब आप सिगल्स को समझते हैं तो पर्ल को समझना बहुत आसान होता है।
कई लोग भूल जाते हैं कि चर और डेटा वास्तव में अलग-अलग चीजें हैं। वेरिएबल डेटा स्टोर कर सकते हैं, लेकिन डेटा का उपयोग करने के लिए आपको चर की आवश्यकता नहीं है।
$scalar_var
$array[1]
$hash{key}
@
से अधिक मान को दर्शाता है:
$
एक भी अदिश मूल्य (जरूरी नहीं एक अदिश चर) को दर्शाता है।
@array;
@array[1,2]
@hash{qw(key1 key2)}
@{ func_returning_array_ref };
%
को दर्शाता जोड़े (कुंजी और मूल्यों) है, जो एक हैश चर या एक भिन्नता हो सकती है::
%hash
%$hash_ref
कि एक पूरे के रूप सरणी, एक टुकड़ा है, या एक भिन्नता हो सकती है पर्ल v5.20 के तहत, %
अब key/value slice या या तो हैश या सरणी को इंगित कर सकता है:
% सरणी [@indices]; # इंडेक्स और तत्वों के जोड़े रिटर्न % हैश {@keys}; # उन चाबियों के लिए कुंजी-मानों के जोड़े लौटाते हैं
साइड नोट: आप स्केलर संदर्भ भी प्राप्त कर सकते हैं - बिंदु क्या होगा, मुझे नहीं पता, लेकिन आप कर सकते हैं। उनको अस्वीकार करना '$$ scalar_ref' जैसे कुछ के साथ किया जाता है। –
स्केलर संदर्भ उन्हें कॉपी किए बिना बड़े डेटा को पास करने के लिए अच्छा है। –
- 1. पर्ल में ऑब्जेक्ट और क्लास के बीच क्या अंतर है?
- 2. अभिव्यक्तियों के बीच उन PHP के बीच क्या अंतर है?
- 3. `$ this-> name` और` $ this -> $ name` के बीच क्या अंतर है?
- 4. पर्ल में 'eq' और '= ~' के बीच क्या अंतर है?
- 5. पर्ल में खुले और सिसोपेन के बीच क्या अंतर है?
- 6. पर्ल में बारवेर्ड और * बारवर्ड के बीच क्या अंतर है?
- 7. पर्ल में grep और map के बीच क्या अंतर है?
- 8. क्या "||" के बीच अंतर है और "या" पर्ल में?
- 9. जावास्क्रिप्ट कार्यों में var और this के बीच अंतर?
- 10. वेनिला पर्ल और स्ट्रॉबेरी पर्ल के बीच अंतर क्या हैं?
- 11. पर्ल में, एक .pm (पर्ल मॉड्यूल) और .pl (पर्ल स्क्रिप्ट) फ़ाइल के बीच क्या अंतर है?
- 12. पर्ल और जावा रेगेक्स क्षमताओं के बीच अंतर क्या हैं?
- 13. जीसीसी में - होस्ट और - लक्ष्य के बीच क्या अंतर है?
- 14. पर्ल में सिंगल और डबल कोट्स के बीच क्या अंतर है?
- 15. पर्ल और रूबी के बीच ब्लाफिश एन्क्रिप्शन में अंतर
- 16. NASM में% परिभाषित और समीकरण के बीच क्या अंतर है?
- 17. पर्ल में सिस्टम और बैकटीक्स और पाइप के बीच अंतर क्या है?
- 18. पर्ल परिवर्तनीय घोषणा में $, @,% के बीच अंतर क्या हैं?
- 19. पर्ल में पैरामीटर इनपुट तंत्र के बीच अंतर क्या हैं?
- 20. सिम्फनी में रीडायरेक्ट और आगे के बीच क्या अंतर है?
- 21. विजुअल स्टूडियो में // और /// के बीच क्या अंतर है?
- 22. आरएसपीईसी में, नकली और डबल के बीच क्या अंतर है?
- 23. # {} $ {} और% {} के बीच क्या अंतर है?
- 24. के बीच क्या अंतर है:। और: आर !?
- 25. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 26. प्रतिनिधि हैंडलर और उन लोगों के साथ घटनाओं के बीच क्या अंतर है?
- 27. $ और $$ के बीच क्या अंतर है?
- 28. भिन्नता और '-' के बीच क्या अंतर है?
- 29. "$^एन" और "$ +" के बीच क्या अंतर है?
- 30. "Aspnet_regiis -ir" और "aspnet_regiis -iru" के बीच क्या अंतर है?
मैं इस बारे में शिकायत करने वाला था कि यह कई बार एक डुप्ली हो रहा है, लेकिन जब मुझे लगता है कि पर्ल सिगिल का उपयोग क्यों करता है, यह बताता है कि सिगिल का मतलब क्या है, वहां कोई नहीं है सवाल विशेष रूप से पूछते हैं "इनका क्या मतलब है?"तो +1 –
आपको यह संबंधित प्रश्न भी उपयोगी हो सकता है: http://stackoverflow.com/questions/1235837/whats-a-simple-ref – dreeves
आपको दस्तावेज़ीकरण उपयोगी मिल सकता है। क्या हमें वास्तव में सबसे बुनियादी दोहराना है उपयोगकर्ता मैनुअल की सामग्री यहां? – Svante