2014-11-04 56 views
-1

哈希順從的樣子使用<code>print Dumper</code>我的哈希串

$VAR1 = { 
    '374' => { 
    'movies' => [ 'Harry potter 1', 'Harry potter 2'...], 
    'gender' => [ 'M' ], 
    'birthdate' => [ '1973/12/13' ], ... 
    } 

當我嘗試訪問使用

#infoName = 'movies'; 
foreach my $movie (@{$profile{$iD}{$infoName}}) { 

    print $movie; 
} 

我得到的輸出「1979/08/29」等,這是生日領域鍾情的電影元素? 它只訪問數字或東西? 我怎樣才能正確打印從哈希電影?

+0

@mpapec我檢查了'$ infoName'的值,它是'電影' – Anon957 2014-11-04 06:42:43

+0

@mpapec我只是把Dumper語句放在我使用循環的地方,而不是在子函數的開始處打印值$ infoName之前),該值通過函數調用進行更改。這真是愚蠢的我,謝謝你的幫助,雖然:) – Anon957 2014-11-04 06:59:31

回答

0

看來您的代碼發佈和您的Dumper輸出沒有正確關聯。如果我嘗試了你這樣的代碼:

use strict; 
use Data::Dumper; 

my %profile = (
    "374" => { 
     'movies' => [ 'Harry Potter 1','Harry potter 2'], 
     'gender' => [ 'M' ], 
     'birthdate' => [ '1973/12/13' ], 
    } 
); 
print Dumper(\%profile); 
print "----------\n"; 

my $iD = 374; 
my $infoName = 'movies'; 
foreach my $movie (@{$profile{$iD}{$infoName}}) { 
    print $movie."\n" 
} 

它完美的作品,並打印出:

$VAR1 = { 
      '374' => { 
        'birthdate' => [ 
             '1973/12/13' 
            ], 
        'movies' => [ 
            'Harry Potter 1', 
            'Harry potter 2' 
           ], 
        'gender' => [ 
            'M' 
           ] 
        } 
     }; 
---------- 
Harry Potter 1 
Harry potter 2 

因此,無論您的%profile哈希是不是真的含有什麼自卸車節目,或者您發佈的代碼做在由foreach塊處理之前的一些額外的東西。

如果這不能解決您的問題,我建議發佈一個完全正常工作的小示例程序,它可以真正展示問題。