perl – 如何从命令行运行CGI :: Application运行模式?
发布时间:2020-12-15 21:45:20 所属栏目:大数据 来源:网络整理
导读:我在我的 CGI::Application网络应用程序中有一个运行模式,我希望能够从命令行触发,以便我可以自动执行它.从web-app的角度来看,它会进行一些处理,然后通过电子邮件发送结果. 从Web界面调用时,它会传递一组参数(电子邮件地址,要运行的查询,日期等),因此需要传
我在我的
CGI::Application网络应用程序中有一个运行模式,我希望能够从命令行触发,以便我可以自动执行它.从web-app的角度来看,它会进行一些处理,然后通过电子邮件发送结果.
从Web界面调用时,它会传递一组参数(电子邮件地址,要运行的查询,日期等),因此需要传入这些参数. 如何构建对CGI :: Application应用程序的调用,就像我从Web上运行它一样? 解决方法
最初的
CGI specification可以很容易地从命令行运行,完全不是作为特定的HTTP接口,而是可以处理FTP和gopher以及新的顶级URL方案.当我指示它时,我知道我想要什么.
我引用的规范应该为您提供所需的一切,但在大多数情况下,它只是一组环境变量.如果您看到以下请求: http://some.server.com/some/path?a=b&c=d 环境变量看起来像这样: SERVER_PROTOCOL=http REQUEST_METHOD=GET HTTP_HOST=some.server.com SERVER_PORT=80 PATH_INFO=/some/path QUERY_INFO=a=b&c=d 要扭转Perl中极性的极性,可以这样: $ENV{'SERVER_PROTOCOL'} = 'http'; $ENV{'REQUEST_METHOD'} = 'GET'; $ENV{'SERVER_PORT'} = 80; $ENV{'PATH_INFO'} = '/some/path'; $ENV{'QUERY_INFO'} = 'a=b&c=d'; system("perl your-CGI-script.pl"); 在处理POST查询时,事情变得更加复杂,并且可能需要更多可能的环境变量.最糟糕的情况是,您可以使用快速CGI脚本枚举它们,例如: print "Content-Type: text/plainrnrn"; foreach (keys(%ENV)) { print "$_=$ENV{$_}rn"; } 现在将它放在Web服务器上代替您的CGI脚本,您将看到所有传入的环境(以及原始环境,因此您需要进行一些判断调用). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |