2017-09-16 97 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