Perl 当表单发布到脚本时,如何访问URL中传递的参数?

Perl 当表单发布到脚本时,如何访问URL中传递的参数?,perl,post,parameters,cgi,get,Perl,Post,Parameters,Cgi,Get,我在将表单提交到我们的站点perl脚本时遇到了一个问题。如果某人在带有url的页面上执行GET请求,例如http://www.example.com/us/florida/page-title,我使用以下正确工作的重写规则重写: RewriteRule ^us/(.*)/(.*)$ /cgi-bin/script.pl?action=Display&state=$1&page=$2 [NC,L,QSA] 我加入了QSA标志,因为我认为这可能会解决问题,但事实并非如此。如果我直接发布到脚本URL,

我在将表单提交到我们的站点perl脚本时遇到了一个问题。如果某人在带有url的页面上执行GET请求,例如
http://www.example.com/us/florida/page-title
,我使用以下正确工作的重写规则重写:

RewriteRule ^us/(.*)/(.*)$ /cgi-bin/script.pl?action=Display&state=$1&page=$2 [NC,L,QSA] 我加入了QSA标志,因为我认为这可能会解决问题,但事实并非如此。如果我直接发布到脚本URL,那么一切正常。如果有人能帮我弄清楚为什么这个方法现在不起作用,我将不胜感激。提前谢谢

将脚本更改为:

use CGI;
use Data::Dumper;

my $query = CGI->new; # even though I'd rather call the object $cgi
print $query->header('text/plain'), Dumper($query); 

查看传递给脚本的内容,并用这些信息更新问题。

如果要进行后期查询,则需要使用etc.从查询字符串中获取参数。您不需要QSA修饰符,也不会从中受益。

$query->url_param()成功了。我最初转储$query参数是为了查看它是否被传递到CGI.pm,但我猜POST URL中的参数实际上不是$query对象的一部分。有趣,但至少我现在有了解决办法。感谢您的快速回复,思南@拉塞尔C.我想你应该感谢“混乱”。现在,谁否决了我的答案?好吧,我没有得到任何感谢,因为他把他的答案和文件联系起来了吗?我是开玩笑的汉克斯·西南。:)是的,在这个问题上投反对票是怎么回事?刺耳,哟,-1准备响应,它不显示输入。输入查询字符串来自环境变量query\u string。@Kinopiko请看您面前的输出。
$cgi
对象中的参数将仅是通过post传递的参数,而不是通过URL传递的参数。那应该会激发一些东西,说。。。嗯。。。也许问题不在于
mod\u rewrite
。发布我正在处理的表单时,如何访问URL中传递的参数?让我看看CGI文档。诚然,这比《混沌》的答案更为间接,但仍将OP引向了正确的方向。现在,如果您不理解
$cgi
对象中的内容,那么这是一个完全不同的问题。对不起,我的错误。我没有注意到Dumper($query)部分。
use CGI;
use Data::Dumper;

my $query = CGI->new; # even though I'd rather call the object $cgi
print $query->header('text/plain'), Dumper($query);