在 Perl 中,如何在命令行上发送 CGI 参数?

Posted

技术标签:

【中文标题】在 Perl 中,如何在命令行上发送 CGI 参数?【英文标题】:In Perl, how do I send CGI parameters on the command line? 【发布时间】:2011-11-16 05:17:26 【问题描述】:

通常我从网页获取数据,但我想从命令行发送数据以方便调试。

要获取数据,我会执行以下操作:

my $query = new CGI;
my $username = $query->param("the_username");

这似乎不起作用:

$ ./script.pl the_username=user1

编辑:

实际上上述工作。检查$usernameif 语句错误(使用== 而不是eq)。

【问题讨论】:

你的脚本中有use CGI;(注意大写)?你用的是$query = new CGI; print $query->param("the_username")还是别的什么? 那里,我修正了一些语法。是的,我用过 CGI; 【参考方案1】:

CGI 从标准输入读取变量。

请参阅 CGI.pm 文档的这一部分:

http://search.cpan.org/dist/CGI/lib/CGI.pod#DEBUGGING

【讨论】:

谢谢,这个页面很有用。 是的,这几乎就像一本关于如何使用 Perl 进行 CGI 的手册;)【参考方案2】:

正如我很久以前发现的,您确实可以使用CGI.pm 将查询字符串参数传递给脚本。我不建议将此作为首选调试方法(最好将可复制的内容保存在文件中,然后将其定向到脚本的STDIN),但是,它确实有效:

#!/usr/bin/env perl

use warnings; use strict;

use CGI;

my $cgi = CGI->new;

my $param_name = 'the_username';

printf(
    "The value of '%s' is '%s'.\n",
    $param_name, $cgi->param($param_name)
);

输出:

$ ./t.pl the_username=yadayada
'the_username' 的值为 'yadayada'。

【讨论】:

谢谢你的权利。我只是在检查是否发送时使用了不正确的语法。

以上是关于在 Perl 中,如何在命令行上发送 CGI 参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Perl CGI 程序发送 JSON 响应?

如何在 Perl/CGI 中为 Web 应用程序创建持久的 shell 命令会话?

如何从命令行测试Perl CGI脚本的文件上传?

如何使用 mod_perl 发送自定义 http 状态码

如何查看perl cgi.pm的版本

在 psql 命令行上传递数组参数