Now, when calling such scripts without any parameters (i.e. without query string after the script name / path), the scripts are seeing an unwanted parameter "Keywords" (which does not have a value).
Trivial to test
$ perl -MData::Dump -MCGI -e " dd( CGI->new(q{?noampernoequal}) )"
bless({
".charset" => "ISO-8859-1",
".fieldnames" => {},
".parameters" => ["keywords"],
"escape" => 1,
"param" => { keywords => ["?noampernoequal"] },
"use_tempfile" => 1,
}, "CGI")
$ perl -MCGI -e " print CGI->new(q{?noampernoequal})->param "
keywords
$ perl -MCGI -e " print CGI->new(q{?noampernoequal})->keywords "
?noampernoequal
$ perl -MCGI -e " print for CGI->new(q{?noampernoequal})->keywords "
?noampernoequal
$ perl -MCGI -e " print for CGI->new(q{?a=b;noampernoequal})->keywords
+ "
Easy to remove
use Data::Dump;
use CGI;
my $q = CGI->new( q{?noampernoequal});
dd $q;
dd $q->param;
dd $q->keywords;
$q->delete('keywords') if $q->keywords;
dd $q->param;
dd $q;
__END__
bless({
".charset" => "ISO-8859-1",
".fieldnames" => {},
".parameters" => ["keywords"],
"escape" => 1,
"param" => { keywords => ["?noampernoequal"] },
"use_tempfile" => 1,
}, "CGI")
"keywords"
"?noampernoequal"
()
bless({
".charset" => "ISO-8859-1",
".fieldnames" => {},
".parameters" => [],
"escape" => 1,
"param" => {},
"use_tempfile" => 1,
}, "CGI")
I don't think I've ever used this feature in 10 years :)