我想将一个变量添加到URL中 www.example.com/index.cgi?username=demo
我在index.html中有一个表单,其中包含action = login.cgi
在login.cgi中
if (($cgi->param('username') eq 'demo') && ($cgi->param('password') eq 'demo')) {
my cookie= CGI::Cookie->new(-name=>'username', -value=>$cgi->param('username'));
print $cgi->redirect(-uri => 'index.cgi', -cookie => $cookie);
}
else {
print $cgi->redirect(-uri => 'index.html');
}
在index.cgi中
my $username = $cookies{username}->value;
所以我想修改index.cgi的URL,这样它就可以从变量$ username
添加用户名。www.example.com/index.cgi?username=demo
答案 0 :(得分:0)
您可以使用点运算符或双引号组合字符串。
使用点运算符:my $url = 'www.example.com/index.cgi?username=' . $username;
。
使用双引号:my $url = "www.example.com/index.cgi?username=$username";
。
您可以组合多个字符串:
my $base_url = 'www.example.com/index.cgi';
my $key = 'username';
my $value = $username;
my $url = "$base_url?$key=$value";
不要忘记在字符串中转义特殊字符(例如&或%):
use URI::Escape;
$username = uri_escape $username;
如果你有一个键和值的哈希值,你可以使用它:
use URI::Escape;
my %h = (username => 'demo', password => 'demo', topic => 'perl');
my $url = 'www.example.com/index.cgi';
$url .= '?' . join '&', map {uri_escape "$_=$h{$_}"} keys %h;