【发布时间】:2014-09-22 20:55:31
【问题描述】:
我有一个调用另一个 cgi 脚本的 cgi 脚本。
main_script.cgi 脚本如下所示:
print qx/child_script.cgi arg1=foo arg2=bar/;
child_script.cgi 看起来像这样:
use CGI;
use Data::Dumper;
my $query = CGI->new;
warn Dumper($query);
如果我在 shell 中执行 ./main_script.cgi,我会得到:
$VAR1 = bless( {
'.parameters' => [
'arg1',
'arg2'
],
'use_tempfile' => 1,
'.charset' => 'ISO-8859-1',
'.fieldnames' => {},
'param' => {
'arg1' => [
'foo'
],
'arg2' => [
'bar'
]
},
'escape' => 1
}, 'CGI' );
但是如果我在浏览器中访问myhost.com/main_script.cgi,输出是:
$VAR1 = bless( {
'.parameters' => [],
'use_tempfile' => 1,
'.charset' => 'ISO-8859-1',
'.fieldnames' => {},
'param' => {},
'escape' => 1
}, 'CGI' );
【问题讨论】:
-
@Miller,我可能不明白你的意思,但默认情况下,CGI 对象确实包含来自命令行的参数 - 请参见此处:perldoc.perl.org/CGI.html#DEBUGGING
-
CGI 从标准输入读取变量,这就是为什么如果您从命令行调用它而不是从浏览器调用它可以正常工作的原因。 Also see