Perl 有人能解释一下这里的实际错误是什么以及如何修复它吗?

Perl 有人能解释一下这里的实际错误是什么以及如何修复它吗?,perl,hash,loops,Perl,Hash,Loops,我试图在嵌套的for/foreach循环中使用哈希 用严格的它说 Global symbol "$mapping" requires explicit package name at ./test2.pl line 39. Execution of ./test2.pl aborted due to compilation errors. 没有严格的 Use of uninitialized value $mapping in hash element at ./test2.pl line

我试图在嵌套的for/foreach循环中使用哈希

严格的
它说

Global symbol "$mapping" requires explicit package name at ./test2.pl line 39. 
Execution of ./test2.pl aborted due to compilation errors.
没有严格的

Use of uninitialized value $mapping in hash element at ./test2.pl line 46, <$fh> line 8. 
Use of uninitialized value in concatenation (.) or string at ./test2.pl line 46, <$fh> line 8.

在./test2.pl第46行第8行的哈希元素中使用未初始化的值$mapping。
在./test2.pl第46行第8行的串联(.)或字符串中使用未初始化的值。
print$hashref->{$mapping}
在输出中为空


错误是什么?

您试图使用一个不存在的名为
$mapping
的变量。有一个名为
%mapping
的元素,它有一个名为
$mapping{$outlook}
的元素,但是
$mapping
如果存在,它将是一个不相关的标量,而不是散列的一部分


看起来您应该使用
$hashref->{$mapping{$outlook}

未初始化值$mapping的使用不够清晰?我认为一些有经验的主持人可以编辑这个问题的标题,以更好地适应这个问题。@Victor您可以随时编辑问题/标题,有人会过来帮您批准/不批准。很好。我不知道这一点(事实上,“交给海狸吧”是我的信仰)。