我正在尝试通过param函数设置一个参数传递给下一页。
我试过
param(-name=>'foo',-value=>'the value');
param(-name=>'fooz',-values=>['an','array','of','values']);
param('foo3', 1);
我的脚本重定向到另一个检查所有(参数),但没有运气。 CGI手册页暗示这应该“正常工作”。我做错了什么?
谢谢!
答案 0 :(得分:4)
有几种方法可以做到这一点。
借助URI::QueryParam方法构建重定向URI。
use URI qw();
use URI::QueryParam qw();
my $q = CGI->new;
my $u = URI->new($q->url);
$u->query_param(foo => 'the value');
$u->query_param_append(fooz => qw(an array of values));
$u->query_param(foo3 => 1);
$u->as_string # expression returns serialised string
Save the state文件的参数,然后从重定向的页面加载该文件的状态。
my $query = CGI->new;
$query->save(\*FILEHANDLE);
my $q = CGI->new(\*INFILEHANDLE);
通过JavaScript进行重定向,但这不会让您更改参数。
my $q = CGI->new;
print $q->header();
print "window.location=\"$url\";\n\n"
在我看来,我上面列出的第一个选项是最容易做到的。
答案 1 :(得分:1)
您需要使用self_url
method。
$cgi->param(-name=>'foo',-value=>'the value');
$cgi->param(-name=>'fooz',-values=>['an','array','of','values']);
$cgi->param('foo3', 1);
printf '<a href="%s">next page</a>', $cgi->self_url;
这变成f.ex. <a href="http://localhost:5000/foo.pl?foo=the%20value;fooz=an;fooz=array;fooz=of;fooz=values;foo3=1">next page</a>
。