【发布时间】:2013-10-27 09:55:26
【问题描述】:
背景
我有一个 Perl 模块,它使用数组作为输入/输出参数,如下所示:
Execute({inputfile => $req->{modules}.'filename', param => \@xchange});
在模块内部构建一个哈希并通过引用返回
$param[0] = \%values;
这一切都很好(我认为),print Dumper @xchange[0]; 会将我想要的内容输出为
$VAR1 = { '33' => 'Title1', '53' => 'Title2', '21' => 'Title3' };
目标
我想循环遍历内容并一一打印键/值对,例如这样
%testhash = ('33' => 'Test1', '53' => 'Test2', '21' => 'Test3' );
foreach $key (keys %testhash) {
print "LOOP: $key, value=$testhash{$key}\n";
}
此循环确实按预期工作,并通过print Dumper \%testhash; 转储我的测试哈希输出与上面的数组元素相同
$VAR1 = { '33' => 'Test1', '53' => 'Test2', '21' => 'Test3' };
问题
现在的问题似乎是,虽然这两种结构看起来是同一类型的,但我无法理解,如何正确访问存储在 @xchange[0] 中的返回哈希。
我确实尝试了%realhash = @xchange[0]; 和%realhash = \@xchange[0];,但随后print Dumper \%realhash; 将分别输出$VAR1 = { 'HASH(0xa7b29c0)' => undef }; 或$VAR1 = { 'REF(0xa7833a0)' => undef };。
所以我要么需要一种方法来获取干净的新哈希中的@xchange[0] 的内容,要么需要一种方法来遍历 @xchange[0] 元素内的哈希。
我想我被整个哈希引用概念搞砸了,但我在这里不知所措,想不出另一种方法来谷歌搜索它。
【问题讨论】: