我是perl编程的初学者
我想在fetch中的值为null时执行代码的一部分意味着没有cookie存在,如果有cookie则是另一部分。
但我面临的错误是:
Can't call method "value" on an undefined value at /net/rtulmx0100/fs7/www/LabelMeDev_Student/annotationTools/perl/session_test.cgi line 93, <FP> line 3.
这是我的代码:
%cookies = CGI::Cookie->fetch;
$id = $cookies{'name'}->value;
if($id == null)
{
print "Content-Type: text/plain\n\n" ;
print "hahahah";
}
else{
print "Content-Type: text/plain\n\n" ;
print $id;
}
答案 0 :(得分:9)
Perl中没有null
,但有undef
。如果您在null
开启的情况下运行,那么您在使用use strict
时会遇到错误,您应该这样做。
由于CGI::Cookie
返回一个用于初始化哈希的列表,我们可以使用exists
运算符来查看哈希中是否存在给定键。
此外,由于条件的两个分支都会导致打印CGI标题,我们可以将其移到条件之外,我们可以使用标准CGI模块来执行此操作。
use strict;
use warnings;
use CGI;
use CGI::Cookie;
my $q = CGI->new;
print $q->header( 'text/plain' );
my %cookies = CGI::Cookie->fetch;
if ( exists $cookies{name} ) {
print $cookies{name}->value;
} else {
print "hahahah";
}