2

我是 perl 编程的初学者

当 fetch 中的值为 null 时,我想执行一部分代码意味着不存在 cookie,如果存在 cookie,则执行另一部分。

但我面临错误:

软件错误:

无法在 /net/rtulmx0100/fs7/www/LabelMeDev_Student/annotationTools/perl/session_test.cgi 第 93 行,<FP> 第 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;
}
4

1 回答 1

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";
}
于 2013-08-29T17:29:08.227 回答