2013-04-05 91 views
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' 
    } 
    } 

現在我想日誌文件的值從ABC更改爲業。如何實現這一目標?

我寫

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

但它沒有作品!它仍然是「abc」。

回答

7

試試這個:

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

數據::自卸車的名字你作爲$ VAR1變量,這是不是在你的哈希的條目。

+0

謝謝你,它的工作原理現在好了! – 2013-04-05 09:35:29

4

首先,總是使用use strict; use warnings;

你想

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

如果您獲得使用Dumper(\%myhash)轉儲,

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

如果您獲得使用Dumper($myhash)轉儲,

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

$myhash持有的散列的引用,所以你需要將它解引用到a訪問哈希。這就是->正在做的事情。

0

Data::Dumper有助於分析一個巨大的哈希值,並將這些值命名爲$ VAR在輸出中。

回答你的問題是:

您可以設定值

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