2012-04-15 2 views
2

Я не эксперт по Perl, так что это, вероятно, простой вопрос.Как использовать Perl Storable, изменяя значение хэша

Я использую Storable и следую this example, чтобы сохранить хэш. Во-первых, я храню оригинальный хэш.

use Storable qw(store retrieve freeze thaw dclone); 
%color = ('Blue' => 1, 'Red' => 0.8, 'Black' => 0, 'White' => 1); 
store(\%color, 'mycolors'); 

Затем я извлекаю его. (другой сценарий)

use Storable qw(store retrieve freeze thaw dclone); 
$colref = retrieve('mycolors'); 
printf "Blue is still %lf\n", $colref->{'Blue'}; 

Вопрос: как изменить одно из значений хеширования? Например, сделайте что-нибудь вроде

$colref->{'Blue'} = 2; 
store(\%color, 'mycolors'); 

во втором скрипте.

+0

Что произошло, когда вы пробовали? – geekosaur

+0

@geekosaur Всякий раз, когда я читаю его, синий (и все остальные цвета) был теперь 0. Я думаю, что имеет смысл - цвет% не определен в скрипте чтения, но я не знаю, как мне его потянуть от 'mycolors' – varatis

+0

У вас есть правильная идея; рассмотрите то, что у вас уже есть, по сравнению с тем, что вы хотите передать в 'store'. – geekosaur

ответ

6

Необходимо, чтобы изменить

store(\%color, 'mycolors'); 

в

store($colref, 'mycolors');