我有一个Perl和一个CGI文件,通过它我想从数据库中获取数据。我有一个UI,我试图使用AJAX调用,它将命中perl( .pl)或( .cgi)文件,并获得JSON中的响应。我通过运行命令提示符检查了perl / cgi文件,它工作正常。这就是我在command prompt
中运行代码的方式:
D:\>PerlExecutables\strawberry_32\perl\bin\perl.exe C:\Users\UserXYZ\Desktop\PerlExamples\test.cgi
原因是我无法在我的机器上进行任何类型的安装,也不想通过Apache
或IIS
之类的服务器运行它。
怎么能实现这一目标?有没有办法通过传递perl.exe
路径执行或任何其他替代方法使脚本在AJAX中工作?
谢谢!
答案 0 :(得分:3)
执行此操作的一种方法是使用Plack::App::CGIBin。它允许您使用PSGI / Plack协议将CGI脚本作为应用程序挂载。
use Plack::App::CGIBin;
use Plack::Builder;
my $app = Plack::App::CGIBin->new(root => "/path/to/cgi-bin")->to_app;
builder {
mount "/cgi-bin" => $app;
};
将其保存为myapp.psgi
(或调用您的任何内容)并按以下方式运行:
$ plackup myapp.psgi
默认情况下,它将在localhost上的端口3000上打开服务器。您需要能够安装Perl模块。因为你有草莓Perl应该不是一个问题。在最坏的情况下,只需使用local :: lib。
您还需要能够打开一个端口进行收听。如果你不能,除了让管理员安装一个实际的全面Web服务器之外别无其他解决方案。
PSGI协议和Plack工具是一个简单易用的CGI替代品。它们使您可以非常灵活,同时可以轻松地持续运行大型应用程序。