2012-06-17 14 views
6

perl रेफरी के बारे में प्रश्न।

$ref = [11, 22, 33, 44]; 
print "$$ref[0]" . "\n"; 
print "@$ref[0]" . "\n"; 

जब मैं perl -d चलाता हूं।

DB<1> p @$ref 
11223344 
DB<2> p $ref 
ARRAY(0x9dbf480) 
DB<3> p \$$ref[0] 
SCALAR(0x9dbf470) 
DB<4> p \@$ref[0] 
SCALAR(0x9dbf470) 

$$ ref [0] ARRAY (0x9dbf480) का पहला स्केलर खड़ा है।

मतलब @ $ ref [0] क्या है? मैं समझ नहीं सका।

+5

['perlol'] (http://perldoc.perl.org/perllol.html) और [' perldsc'] (http://perldoc.perl.org/perldsc.html) के माध्यम से पढ़ने पर विचार करें। यदि वे इस सामान को समझाते हैं तो वे एक बहुत अच्छा काम करते हैं। –

+1

बैकस्लैश संदर्भ ऑपरेटर है, आप \ $$ ref [0] और \ @ $ ref [0] पर कॉल कर रहे हैं, आप फिर से संदर्भित कर रहे हैं और फिर संदर्भ के लिए पूछ रहे हैं, तो आप लगभग निश्चित रूप से ऐसा करने का मतलब नहीं रखते हैं। –

उत्तर

10

$ref = [11, 22, 33, 44]; एक अज्ञात सरणी का संदर्भ है।

$$ref[0] या ${$ref}[0] या $ref->[0] सरणी को संदर्भित करना और पहला तत्व पुनर्प्राप्त करना है।

@$ref[0] या @{$ref}[0] सरणी को संदर्भित करना और सरणी टुकड़ा प्राप्त करना जिसमें केवल पहला तत्व शामिल है।

4

पहला, @$ref[0]\@$ref[0] से अलग है। आपके पूर्व में आपके डीबग सत्र में, और बाद में आपकी स्क्रिप्ट में है।

वैसे भी, @$ref[0] का अर्थ @{$ref}[0] जैसा ही है। यदि आपके पास @ref नामक एक सरणी थी, तो @ref[0] समकक्ष होगा। यह सरणी का पहला तत्व प्राप्त करने के लिए स्लाइस नोटेशन का उपयोग कर रहा है।

@array[$x] और $array[$x] के बीच का अंतर यह है कि पहले में आप एक से अधिक इंडेक्स निर्दिष्ट कर सकते हैं और केवल एक के बजाय सरणी से तत्वों का संग्रह वापस ले सकते हैं। लेकिन अगर आप केवल एक इंडेक्स को ब्रैकेट के बीच रखते हैं, तो आपको वही परिणाम मिलता है।

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