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

Теперь я хочу, чтобы изменить значение логфайл от азов до опр. как добиться этого?

Я написал

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

Но это не работает !! Это все еще «abc».

ответ

7

Попробуйте один:

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

Data :: Dumper имена переменную как $ var1, это не запись в ваш хэш.

+0

Спасибо, он теперь работает хорошо !! –

4

Прежде всего, всегда используйте use strict; use warnings;.

Вы хотите

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

Если полученный дамп с помощью Dumper(\%myhash),

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

Если вы получили дамп с помощью Dumper($myhash),

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

$myhash содержит ссылку на хэш , поэтому вам нужно разыменовать его хэш хэш. Вот что делает ->.

0

Data::Dumper помогает анализировать огромный хеш, и значения будут называться $ VAR в выводе.

Ответ на ваш вопрос:

Вы можете установить значение в качестве

$myhash->{'logfile'}="def"; 
Смежные вопросы