2012-12-20 10 views
9

के मूल्य में ऐरे क्या key : value में मूल्य के रूप में सरणी के संदर्भ को असाइन करना संभव है?हैश perl

+2

[डाटा संरचनाओं रसोई की किताब] पर एक नज़र डालें (http: //perldoc.perl .org/perldsc.html # हैश-के-सरणियों)। – mpe

उत्तर

21

हां यह है। बैकस्लैश का उपयोग करके सरणी के लिए एक संदर्भ बनाएँ:

$hash{key} = \@array; 

ध्यान दें कि यह वास्तविक सरणी से लिंक होगा, इसलिए यदि आप इस तरह के रूप में एक परिवर्तन करते हैं:

$array[0] = "foo"; 

भी मतलब है कि $hash{key}[0] है कि "foo" पर सेट करें।

अगर ऐसा नहीं कि आप क्या चाहते है, तो आप एक गुमनाम सरणी संदर्भ [ ... ] का उपयोग करके मूल्यों कॉपी कर सकते हैं:

$hash{key} = [ @array ]; 

इसके अलावा, आप ऐसा करने के लिए में सरणी के माध्यम से जाने की जरूरत नहीं है। आप बस सीधे असाइन कर सकते हैं:

$hash{key} = [ qw(foo bar baz) ]; 

perldoc perlref

+0

शायद ऑटोविविफिकेशन के बारे में कुछ शब्द? :) शुरुआती – gaussblurinc

+0

@loldop के लिए जानना अच्छा है, हां, शुरुआत के लिए जानना बहुत सी चीजें अच्छी हैं, हालांकि, यहां हम ऑटोविविफिकेशन के बारे में बात नहीं कर रहे हैं, केवल सरल स्केलर मान असाइन किए जा रहे हैं। – TLP

+0

मुझे लगता है कि आपका मतलब है "eq 'foo'" नहीं "== 'foo'" – mswanberg

9

में बनाने संदर्भों के बारे में और अधिक पढ़ें हां। इस तरह के डेटा संरचनाओं तक पहुँचने के लिए कुछ बुनियादी नियमों के लिए http://perlmonks.org/?node=References+quick+reference देखें, लेकिन यह बनाने के लिए, बस इन में से एक कार्य करें:

%hash = ('somekey' => \@arrayvalue); 
$hash{'somekey'} = \@arrayvalue; 
%hash = ('somekey' => [ ... ]); 
0
use Data::Dumper; @name=('5/17', 
    '5/17','5/17','5/17','5/17','5/17','5/17','5/17'); @status_flags=('U 
    H L','U C','U H L','U C','U C','U H L','U C', 'U H L'); 
    @ip_address=('192.168.0.11','192.168.0.2','192.168.0.13','192.168.0.0','192.168.0.3','192.168.0.12','192.168.0.4','192.168.0.14'); @dp_id=('0','0','0','0','0','0','0','0'); 
    @ip_prefix_length=('32','32','32','24', '32', '32','32','32'); 

    for ($value=0;$value<=5;$value++) { 


    $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'name'=>"$name[$value]"}; 
      $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'dp-id'=>"$dp_id[$value]"}; 
      $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'ip-address'=>"$ip_address[$value]"}; 
      $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'ip-prefix-length'=>"$ip_prefix_length[$value]"}; 


    $keyvals{'Response'}{'brocade-extension-ip-route'}{'extension-ip-route'}={'ip-gateway'=>'*'}; 




    } 
     print Dumper \%keyvals; 

    Each array value assign into hash value. $var1= { 
       'Response' => { 
          'extension-ip-route' => { 
                'status-flags' => 'U H L ' 
                    , 
                'ip-gateway' => '*', 
                'name' => '0/2', 
                'ip-address' => '192.168.20.11', 
                'dp-id' => '0', 
                'ip-prefix-length'=>'32' 

                } 
          } 
      }; 
+0

आपको अपना उत्तर संपादित करना चाहिए ताकि यह सही ढंग से स्वरूपित और पठनीय हो। – AeroBuffalo