0

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

4

3 回答 3

7

试试这个:

$myhash->{'logfile'}="def";

Data::Dumper 将您的变量命名为 $VAR1,这不是您的哈希中的条目。

于 2013-04-05T09:28:16.810 回答
4

首先,始终使用use strict; use warnings;.

你要

$VAR1->{'logfile'} = "def";

如果您使用 获得转储Dumper(\%myhash)

$myhash{'logfile'} = "def";

如果您使用 获得转储Dumper($myhash)

$myhash->{'logfile'} = "def";

$myhash持有对哈希的引用,因此您需要取消引用它才能访问哈希。这就是->正在做的事情。

于 2013-04-05T09:36:05.977 回答
0

Data::Dumper有助于分析一个巨大的哈希值,这些值将在输出中命名为$VAR

你的问题的答案是:

您可以将值设置为

   $myhash->{'logfile'}="def";
于 2013-04-05T10:59:05.297 回答