CGI脚本中的进程URL

时间:2013-06-21 17:19:14

标签: perl cgi

read(STDIN, $FormData, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $FormData);                              
foreach $pair (@pairs) {

(name, $value) = split(/=/, $pair);          
$value =~ tr/+/ /;

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$FORM{$name} = $value;
    my $Var1 = $Form{Var1};
    my $Var2 = $Form{Var2};} 

我在Perl面向对象的脚本修改中需要帮助,这是一个进程 从URL提交的数据,调用LDAP和获取用户参数,添加这些 POST表单的参数,并将包含所有数据的http POST发送到同一个URL。

我的目标是修改原始Perl脚本以获取多个文章参数。 多篇文章参数将采用以下形式:

id0=7kqm0uoamdtkff548567abdi3a&qpw0=ATYP%2d.....
&id1=7kqm0uoamdtcccccckff54123abdfn5&qpw1=ATYP....
........
&idN=NXXXXXX&qpwN=ATYP%2d%201....

其中N <= 50

我已阅读标准输入(由表单发送)

我无法弄清楚新参数如何:

idN    where N <= 50
qpwN   where N <= 50

可以添加到关联数组%names

我从键中解析了“^ id”:

my $key;
my $count;
foreach $key (sort keys(%names)) {
if ($key =~ '^id') {
   print $key, '=', $names{$key}, "\n";
   $count++;
   }
}
print "Total articles number = $count\n";

if ($count <= 50) {
print "You ordered $count articles\n";
}
else {

print "You exceeded the 50 articles limit"
}

所以我想添加两个新参数$idN&amp; $qpwN 其中N <= 50这种形式:

my $Var1 = $Form{Var1};
my $Var2 = $Form{Var2};

怎么做? 提前谢谢!

埃丝特

1 个答案:

答案 0 :(得分:3)

如果要处理Perl脚本中表单的数据,请使用CGI.pm和CGI::Expand来处理高级查询参数。

#!/usr/bin/perl
use warnings;
use strict;
use CGI;
use CGI::Expand;

my $q = CGI->new;
my $p = CGI::Expand->expand_cgi($q);
然后

$ p将包含您的所有查询参数。