2010-07-11 8 views
9
%data = (
    'digits' => [1, 2, 3], 
    'letters' => ['a', 'b', 'c'] 
); 

मैं push'4'$data{'digits'} में कैसे कर सकता हूं?मैं एक तत्व को हैश मान के रूप में आयोजित सरणी संदर्भ में कैसे धक्का दे सकता हूं?

मैं पर्ल के लिए नया हूं। उन $, @, % प्रतीकों मेरे लिए अजीब लगते हैं; मैं एक PHP पृष्ठभूमि से आया हूँ।

+1

पर्ल के बारे में जानकारी के लिए देखें [perldoc perldata] (http://perldoc.perl.org/perldata.html) और [perldoc perldsc] (http://perldoc.perl.org/perldsc.html) डेटा संरचनाएं। – Ether

उत्तर

13
push @{ $data{'digits'} }, 4; 

$ डेटा {'अंक'} एक सरणी संदर्भ देता है। इसके आस-पास @ {} को "इसे अस्वीकार करें" पर रखें। इसी तरह,% {} एक हैश संदर्भ को अस्वीकार कर देगा, और $ {} एक स्केलर संदर्भ।

आप उपयोग कर सकते हैं यदि आप IE

$hashref = { "foo" => "bar" } 

, एक हैश संदर्भ में कुछ डाल करने के लिए की जरूरत है या तो:

${ $hashref }{ "foo2" } = "bar2" 

या तीर-अंकन:

$hashref->{"foo2"} = "bar2" 

एक में निश्चित रूप से, एक संदर्भ के बारे में सोचें वैरिएबल के नाम के समान:

push @{ $arrayref }, 4 
push @{ "arrayname" }, 4 
push @arrayname , 4 

असल में, "सॉफ्ट संदर्भ" क्या हैं। आप सभी strictnesses को चालू नहीं किया है, तो आप सचमुच कर सकते हैं:

# perl -de 0 
    DB<1> @a=(1,2,3) 
    DB<2> $name="a" 
    DB<3> push @{$name}, 4 
    DB<4> p @a 
1234 
+2

एक गैर-हार्ड संदर्भ एक प्रतीकात्मक संदर्भ है। – ysth

2
push @{data{'digits'}}, 4; 

@ {} एक संदर्भ से एक सरणी (। data{'digits'} एक सरणी संदर्भ देता है) तो हम सरणी उपयोग हम बनाता है हैश में सरणी पर मान 4 को धक्का देना है।

यह link इसे थोड़ा सा समझाने में मदद करता है।

मैं इस link का उपयोग पर्ले में हैश के बारे में किसी भी प्रश्न के लिए करता हूं। perldsc, विशेष रूप से Hashes-of-Arrays अनुभाग:

1
push @{ $data{digits} }, 4; 

आधिकारिक पर्ल प्रलेखन वेबसाइट डेटा संरचनाओं पर एक अच्छा ट्यूटोरियल है।

$, @ और% सिगिल के रूप में जाना जाता है।

2

आंखों के विकल्प पर एक विदेशी लेकिन बहुत ही सुखद के लिए autobox::Core सीपीएएन मॉड्यूल पर एक नज़र डालें।

use autobox::Core; 

my %data = (
    digits => [1, 2, 3], 
    letters => ['a', 'b', 'c'], 
); 

$data{digits}->push(4); 

$data{digits}->say; # => 1 2 3 4 
संबंधित मुद्दे

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