2014-02-27 42 views
0

我想學習Perl中複雜的數據結構,對於II已經寫了代碼,但我沒有得到任何輸出:如何打印哈希散列在一個哈希是參考其他

#!/usr/bin/perl 
use strict; 
use warnings; 

my %abc=(Education => "BE",Marital_Status => "Single", Age => "28", Working_Exp => "4yrs"); 
my %cde=(Education => "BE",Marital_Status => "Single", Age => "29", Working_Exp => "5yrs"); 


my %info =(info_one => "\%abc", info_two => "\%cde"); 

foreach my $val (keys %info) 
{ 
    foreach my $check (keys %{$info{val}}) 
    { 
    print ${$info{val}}{check}."\n"; 
    } 
} 
+0

使用匿名哈希將幫助您存儲和管理數據。 –

+0

@NaghaveerRGowda:你的意思是,使用「[hashrefs](http://stackoverflow.com/questions/1817394/whats-the-difference-between-a-hash-and-hash-reference-in-perl)」,以及你想要更精確地說「會幫助你存儲和管理數據」:) –

+1

@DanDascalescu:是它的「hashrefs」和謝謝丹:) –

回答

5

爲了學習Perl中的複雜數據結構,沒有比Perl Data Structures Cookbook更好的參考。

info_oneinfo_two are字符串的任務,所以要各地\%abc\%cde去除雙引號。另外,您需要在最後的print行中將$標量符號添加到valcheck,因爲這些是變量。

#!/usr/bin/perl 
use strict; 
use warnings; 

my %abc= (
    Education => "BE", 
    Marital_Status => "Single", 
    Age => "28", 
    Working_Exp => "4yrs" 
); 
my %cde= (
    Education => "BE", 
    Marital_Status => "Single", 
    Age => "29", 
    Working_Exp => "5yrs" 
); 


my %info = (
    info_one => \%abc, 
    info_two => \%cde 
); 

foreach my $val (keys %info) { 
    foreach my $check (keys %{$info{$val}}) { 
     print ${$info{$val}}{$check}."\n"; 
    } 
} 

最後一行是有點醜陋,但你通過數據結構食譜閱讀,您將學習如何使用->操作和更優雅寫的語句。