2014-06-07 89 views
0

之前,我成功地創建一個散列數據與子程序設置,Perl的推鍵的散列數據集

my %check_ip = (
    "data1" => $ip1, 
    "data2" => $ip2, 
    "data3" => $ip3 
    ); 

     'data1' => '127.0.0.1', 
     'data2' => '192.168.0.1', 
     'data3' => '192.168.1.1' 

這是一個簡單的哈希值。 我希望把背後的另一個關鍵,所以,這將成爲哈希散列,看起來就像

config1 => 
     'data1' => '127.0.0.1', 
     'data2' => '192.168.0.1', 
     'data3' => '192.168.1.1', 

什麼是做到這一點的最好方法是什麼?

+1

你應該閱讀和理解[perlreftut - 馬克的有關引用非常簡短的教程(http://perldoc.perl.org /perlreftut.html)/它是標準Perl 5版本的一部分,編寫得很好 – Borodin

+0

感謝鮑羅廷。非常感激。 – nohup

回答

2

要創建嵌套散列,您需要散列引用。

my %check_ip = (
     data1 => $ip1, 
     data2 => $ip2, 
     data3 => $ip3, 
    ); 
my %config = (config1 => \%check_ip); 
+0

謝謝Choroba。這正是我正在尋找的。 – nohup

1

由於散列密鑰只能有一個值,該嵌套散列需要存儲爲散列參考,這是在大括號{}是什麼用途:

my %check_ip = (
       config1 => { "data1" => $ip1, 
           "data2" => $ip2, 
           "data3" => $ip3, }, 
       ); 

更多信息見perldoc perldsc上Perl數據結構。

2
#!/usr/bin/perl 
use strict; 
use warnings; 
my $ip1='127.0.0.1'; 
my $ip2='192.168.0.1'; 
my $ip3='192.168.1.1'; 
my %check_ip = (
       config1 => { "data1" => $ip1, 
           "data2" => $ip2, 
           "data3" => $ip3, }, 
      ); 

訪問象下面這樣:

print $check_ip{config1}{data1}; #output 127.0.0.1 

Demo