使用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
'生日场是哪个?
它只是访问数字或其他什么?
如何从哈希中正确打印电影?
答案 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块处理之前会执行一些其他操作。
如果这不能解决您的问题,我建议发布一个完全正常的小样本程序,它真正证明了这个问题。