为什么我不能以类似哈希的格式打印哈希表?

时间:2013-10-12 21:01:09

标签: perl hash perl-data-structures

我在Perl中有以下代码段:

my $a1 = [ qw(rock pop musical) ];  
my $b1 = [ qw( mystery action drama )];  
my $c1 = [ qw( biography novel periodical)];   

my %media = (  
    music => $a1,  
    file => $b1,  
    print => $c1   
);  

我尝试按如下方式打印:

use Data::Dumper;  
print Dumper (%media);  

我明白了:

$VAR1 = 'file';  
$VAR2 = [   
          'mystery',  
          'action',  
          'drama'  
        ];  
$VAR3 = 'music';  
$VAR4 = [  
          'rock',  
          'pop',  
          'musical'  
        ];  
$VAR5 = 'print';  
$VAR6 = [  
          'biography',  
          'novel',  
          'periodical'  
        ];  

它像列表一样打印哈希。我所期待的是这样的东西,它表示它是一个哈希。

$VAR1 = {  
          'file' => [  
                      'mystery',  
                      'action',  
                      'drama'  
                    ],  
          'music' => [  
                       'rock',  
                       'pop',  
                       'musical'  
                     ],  
          'print' => [  
                       'biography',  
                       'novel',  
                       'periodical'  
                     ]  
        };  

但是如果我将%media转换为匿名哈希引用,我只会得到这个 当我转储哈希表时,为什么不能得到类似哈希的打印?

1 个答案:

答案 0 :(得分:5)

Dumper会将标量列表转储。如果要转储那些,则将对哈希和数组的引用传递给它。

print Dumper(\%media);