2011-04-05 30 views
2

我在第一个文件中创建cookie,并且想要将cookie值更新为第二个文件。我正在使用以下代码来读取和更新cookie的值。但它不起作用。如何使用perl更新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 
    } 
} 

我收到此错误 “无法修改非左值子程序调用在”

回答

2

我觉得你的问题是在这行代码:

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

$cookies{'NewCookie'}->value()是方法。您正在尝试为方法分配一个值。我不是那个熟悉的CGI ::曲奇,但也许你需要改变该行的代码看起来像这样:

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

感谢Eric Johnson的回复它正在工作。现在的问题是,我怎么能写这个新的价值浏览器?我用 my $ q = new CGI; $ q-> header(-COOKIE => $ cookies {'NewCookie'}); ###但它不工作。 – user380979 2011-04-05 12:22:53

0

这一个是老OBV。但只是为了好的措施 - 您需要在更改其价值或任何其他财产后烘烤饼干。在这种情况下,如下所示:

$cookies{'NewCookie'}->bake;