2017-09-16 153 views
0

我想創建一個數組的散列。我如何訪問/打印整個陣列?下面是代碼:在Perl中哈希陣列

my %data;  
my @row = ("My", "Name", "is", "Anthony", "Gonzalves"); 
print "@row"; 
$data{'First'} = \@row; 
print "@data{'First'}"; 

上述代碼的輸出是: 我的名字是安東尼GonzalvesARRAY(0x7fa1a5831dc8)。

+0

'$ data {'First'}'是一個re對數組的支持。你需要'print'@ {$ data {'First'}}「;' – ikegami

+3

通過教程[perlreftut](https://perldoc.perl.org/perlreftut.html)和cookbook [perldsc](https:// perldoc.perl.org/perldsc.html) – zdim

回答

5

在您的代碼中,$data {First}參考到一個數組。要訪問元素(所有元素,作爲列表),您可以用@{}來回避它。所以:

foreach my $element (@{$data {First}}) { 
    print $element; 
} 

或者更短,並打印在其自己的行每一個元素:

use 5.010; 
say for @{$data {First}}; 
+0

歡迎來到Stack Overflow!很高興在這裏有另一位高級社區人員:) – simbabque

0

您應該使用@{}訪問數組的ref:

%HoA=(
    flintstones =>["fred","barney"], 
); 

$HoA{teletubbies}=["tinky winky","dipsy","laa-laa","po"]; 

for $family (keys %HoA){ 
    print "$family: @{$HoA{$family}}\n"; 
} 

輸出是:

simpsons: homer Marge bart 
teletubbies: tinky winky dipsy laa-laa po