#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;