检查 CGI.pm 中是否存在空参数
Check for the existence of empty parameters in CGI.pm
要检查请求参数是否具有值 (http://example.com?my_param=value),您可以使用
query->param('my_param')
如果使用 no_value 形式,这似乎是不稳定的:http://example.com?my_param .
有没有办法简单地检查 CGI.pm 中参数的存在?
这似乎取决于浏览器的实现。根据this Perlmonks thread from 2001, empty parameters might not be returned. But if they are, the key will be there, but contain an empty string q{}
. If the argument wasn't present, it will be undef
, so you can check with defined
.
您可以检查参数是否存在并定义。以下代码
#!/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';
要检查请求参数是否具有值 (http://example.com?my_param=value),您可以使用
query->param('my_param')
如果使用 no_value 形式,这似乎是不稳定的:http://example.com?my_param .
有没有办法简单地检查 CGI.pm 中参数的存在?
这似乎取决于浏览器的实现。根据this Perlmonks thread from 2001, empty parameters might not be returned. But if they are, the key will be there, but contain an empty string q{}
. If the argument wasn't present, it will be undef
, so you can check with defined
.
您可以检查参数是否存在并定义。以下代码
#!/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';