要检查请求参数是否具有值(http://example.com?my_param=value(,您可以使用
query->param('my_param')
如果使用no_value形式,这似乎是片状的:http://example.com?my_param 。
有没有办法简单地检查 CGI.pm 中参数的存在?
您可以检查参数是否存在已定义。 以下代码
#!/usr/bin/env perl
use strict;
use warnings;
use CGI;
my $cgi = CGI->new();
print $cgi->header;
my $defined = defined $cgi->param('tt');
my $val = $cgi->param('tt');
print <<END;
<!doctype html>
<html> HTML Goes Here
<h1>tt: "$defined" "$val"</h1>
</html>
END
将生成输出:
<!doctype html>
<html> HTML Goes Here
<h1>tt: "1" ""</h1>
</html>
当 URI http:///cgi-bin/t.pl?someother=something&tt 时
不幸的是,当它是唯一的参数时,这不起作用。
所以可以肯定的是,你必须测试:
my $defined = defined $cgi->param('tt') || $ENV{QUERY_STRING} eq 'tt';
这似乎取决于浏览器的实现。根据 2001 年的这个 Perlmonks 线程,可能不会返回空参数。但如果是,密钥将在那里,但包含一个空字符串q{}
.如果参数不存在,它将undef
,因此您可以与defined
进行检查。