1

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

我试过

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

但我得到一个错误,例如 param1=some_string¶m1=some_string are not valid。cgi_name.cgi 不支持命令行参数。

4

1 回答 1

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

于 2012-12-17T17:48:33.040 回答