字符串的哈希值

时间:2014-11-04 06:29:43

标签: perl

使用print Dumper我的哈希看起来像

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

当我尝试使用

访问fave电影元素时
#infoName = 'movies';
foreach my $movie (@{$profile{$iD}{$infoName}}) {

   print $movie;
}

我得到了输出' 1979/08/29'生日场是哪个? 它只是访问数字或其他什么? 如何从哈希中正确打印电影?

1 个答案:

答案 0 :(得分: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哈希值实际上并不包含Dumper显示的内容,或者您​​发布的代码在foreach块处理之前会执行一些其他操作。

如果这不能解决您的问题,我建议发布一个完全正常的小样本程序,它真正证明了这个问题。