捕获另一个CGI程序的输出

时间:2012-12-17 17:37:20

标签: perl

我需要捕获另一个CGI程序的输出,该程序与我的perl脚本位于同一目录中。

我试过

my $output = `./cgi_name.cgi?param1=some_string&param1=some_string`;

但是我收到了一个错误,例如param1 = some_string& param1 = some_string无效。 cgi_name.cgi不支持命令行参数。

1 个答案:

答案 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模块,它仍然值得一试。