我正在尝试在cgi脚本中检查cookie值; 我的测试脚本看起来像
#!/usr/bin/perl -w
use DBI;
use CGI qw/:standard/;
use CGI::Cookie;
my $cgiH = CGI->new;
print header;
print start_html(-title=>'Cookie Terms'), h1("Cookie Terms"), "<hr>\n";
%cookies = CGI::Cookie->fetch;
foreach $k (keys %cookies) {
my $term = "$cookies{$k}";
my $term =~ s/SubjectTerm//;
print "at $k is $term \n";
}
print end_html;
Run Code Online (Sandbox Code Playgroud)
脚本的相关输入(来自HTTP GET)是
Cookie: SubjectTerm1=ponies
Cookie: SubjectTerm2=horses
Run Code Online (Sandbox Code Playgroud)
(这可以通过使用fiddler或调试我的delphi应用程序中的代码来验证).我的脚本(省略HTML包装器)的结果是
at SubjectTerm1 is
at SubjectTerm2 is
Run Code Online (Sandbox Code Playgroud)
或者如果我将print语句更改为
print "at $k is $cookies{$k}\n";
Run Code Online (Sandbox Code Playgroud)
它是
at SubjectTerm1 is SubjectTerm1=ponies; path=/
at SubjectTerm2 is SubjectTerm2=horses; path=/
Run Code Online (Sandbox Code Playgroud)
我想要到达的是这样的
at SubjectTerm1 is ponies
at SubjectTerm2 is horses
Run Code Online (Sandbox Code Playgroud)
我知道我错过了关于哈希用法的一些内容但却无法弄清楚它是什么.我没有正确处理%cookies哈希?
如果你有,use warnings你会看到你正在$term用线条打乱
my $term =~ s/SubjectTerm//;
Run Code Online (Sandbox Code Playgroud)
删除my.
我认为您可能能够提取值只是将分配更改为
my $term = $cookies{$k}->value();
Run Code Online (Sandbox Code Playgroud)
并摆脱s/SubjectTerm//.但不确定这个抱歉.