Как обновить значение cookie с помощью perl?

#perl

#perl

Вопрос:

Я создаю cookie в первом файле и хочу обновить значение cookie во втором файле. Я использую следующий код для чтения и обновления значения cookie. Но это не работает.

 my $new_value = 'modify';
my %cookies = fetch CGI::Cookie;

foreach (keys %cookies) {
    ### I want to change value of NewCookie
    if($_ eq 'NewCookie')   {
        my $val_cookie = $cookies{'NewCookie'}->value;
        warn "n value of NewCookie =>" . $val_cookie;
        $cookies{'NewCookie'}->value = $new_value; ###I don't know is it work or not
    }
} 
  

Я получаю эту ошибку
«Не удается изменить вызов подпрограммы, отличной от lvalue, в»

Ответ №1:

Я думаю, что ваша проблема в этой строке кода:

 $cookies{'NewCookie'}->value = $new_value;
  

$cookies{'NewCookie'}->value() это метод. Вы пытаетесь присвоить значение методу. Я не очень хорошо знаком с CGI::Cookie, но, возможно, вам нужно изменить эту строку кода, чтобы она выглядела следующим образом:

 $cookies{'NewCookie'}->value($new_value);
  

Комментарии:

1. Спасибо Эрику Джонсону за ваш ответ, это работает. Теперь проблема в том, как я могу записать это новое значение в браузер??? Я использовал свой $ q = new CGI; $ q->header(-COOKIE => $cookies{‘NewCookie’}); ### но это не работает.

Ответ №2:

Это старый obv. но просто для верности — вам нужно испечь cookie после изменения его значения или любого другого свойства. В этом случае вот так:

 $cookies{'NewCookie'}->bake;