哈希修改问题

时间:2013-04-05 09:24:45

标签: perl hash

我正在打印哈希[ 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”。

3 个答案:

答案 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";