我需要捕获另一个CGI程序的输出,该程序与我的perl脚本位于同一目录中。
我试过
my $output = `./cgi_name.cgi?param1=some_string¶m1=some_string`;
但是我收到了一个错误,例如param1 = some_string& param1 = some_string无效。 cgi_name.cgi不支持命令行参数。
答案 0 :(得分:3)
cgi_name.cgi
使用CGI
模块的Perl脚本吗?然后它可以判断它是从命令行还是通过CGI运行,在前一种情况下,它会将命令行参数视为键值对。
# cgi-or-cli.cgi
use CGI;
use Data::Dumper;
print Dumper(CGI->new);
$ perl cgi-or-cli.cgi field1=value1 foo=bar
$VAR1 = bless( {
'.parameters' => [
'field1',
'foo'
],
'use_tempfile' => 1,
'.charset' => 'ISO-8859-1',
'.fieldnames' => {},
'param' => {
'field1' => [
'value1'
],
'foo' => [
'bar'
]
},
'escape' => 1
}, 'CGI' );
所以值得尝试将键值对作为单独的命令行参数传递:
my $output = `./cgi_name.cgi param1=some_string param1=some_string`;
即使cgi_name.cgi
不是Perl脚本或不使用CGI
模块,它仍然值得一试。