我被要求为一个用 Perl 编写的脚本开发一个 Web 前端。我不知道从哪里开始。网页如何与命令行脚本交互?
编辑:所以经过两周的研究,我完成了这个项目。我一直在寻找的基本答案是:使用 html 开发网页,使用 cgi 与 perl 脚本通信并重建脚本以使用网页。不过还是感谢大家的帮助,还是有点帮助的。
我被要求为一个用 Perl 编写的脚本开发一个 Web 前端。我不知道从哪里开始。网页如何与命令行脚本交互?
编辑:所以经过两周的研究,我完成了这个项目。我一直在寻找的基本答案是:使用 html 开发网页,使用 cgi 与 perl 脚本通信并重建脚本以使用网页。不过还是感谢大家的帮助,还是有点帮助的。
在此处查看我的示例代码。
我正在使用HTTP和LWP Perl 模块与此 Web 应用程序进行交互。
它正在发布一个表格。
基本上,这个脚本正在做什么,它是在遍历 Qt 翻译文件列表并将其发布到这个在线 Web 应用程序,该应用程序正在使用 Bing Translation API 进行翻译。然后脚本获取翻译后的文件并将其保存到硬盘。在 POST 表单中,它还指定源语言和目标语言是什么。因此,这是在您的 PC 上运行并与 Internet 上的 Web 应用程序交互的脚本示例,包括发送数据和文件并接收它们。
这是关于该主题的好书章节。
将modperl与 Apache 一起使用。维基百科页面也有一些信息。
另一种方法是使用 Perl 编写CGI脚本。这是一个教程,这方面的维基百科页面也很有用。如果您不确定什么是 CGI,请阅读 this或this。
还有一种方法是使用 Perl Web 框架,例如Dancer、Mojolicious和Catalyst。
这有两个方面。
一般来说,您应该为此使用Plack/PGSI。它充当中间件层,允许您以多种方式运行 Perl Web 应用程序(我通常选择 FastCGI,其他选项包括 mod_perl 和 CGI)。
您可以使用诸如Dancer或Catalyst之类的框架(它们在底层使用 Plack),但它们可能有点矫枉过正(取决于脚本的作用)。
如果您的需求非常基本,您可以在没有 Plack 的情况下使用 CGI(CGI 模块使这变得非常容易)。CGI 效率不高,但很容易配置。除非您经常调用脚本或脚本的启动时间很长,否则您不会注意到效率低下。
快速而肮脏的方法是让您的 Web 应用程序生成一个 shell 并在其中运行它。您可以使用反引号、system 或 exec,或者,如果您想要更多控制,可以使用IPC::Run。
稳健的方法是将脚本的业务逻辑分解为一个模块,并重写命令行程序来解析参数,然后从模块中引入适当的函数。然后,您对 Web 应用程序执行相同的操作(不同之处在于您呈现输入和输出的方式)。