我正在打印哈希[ print Dumper($myhash); ]
,如下所示:
$VAR1= {
'context_verdict' => 'Failed',
'logfile' => 'abc',
'Block_000' => {
'Element_0032' => {
'e_verdict' => 'FAILED',
'e_name' => 'Element_0032',
'e_log' => 'This is really bad...',
'e_ref' => 'Good'
}
}
现在我想将logfile的值从abc更改为def。如何实现这个目标?
我写了
$myhash{'$VAR1'}->{'logfile'}="def";
但它不起作用!!它仍然是“abc”。
答案 0 :(得分:7)
试试这个:
$myhash->{'logfile'}="def";
Data :: Dumper将您的变量命名为$ VAR1,这不是哈希中的条目。
答案 1 :(得分:4)
首先,始终使用use strict; use warnings;
。
你想要
$VAR1->{'logfile'} = "def";
如果您使用Dumper(\%myhash)
,
$myhash{'logfile'} = "def";
如果您使用Dumper($myhash)
,
$myhash->{'logfile'} = "def";
$myhash
包含对哈希的引用,因此您需要取消引用它以访问哈希。这就是->
正在做的事情。
答案 2 :(得分:0)
Data::Dumper
有助于分析大量哈希值,输出中的值将命名为 $ VAR 。
回答你的问题是:
您可以将值设置为
$myhash->{'logfile'}="def";