2017-07-18 148 views
1

我有一個Perl和一個CGI文件,我想通過它從數據庫中獲取數據。我有一個用戶界面,我嘗試使用AJAX調用,它將打擊perl(.pl)或( .cgi)文件並以JSON格式獲取響應。我通過運行命令提示符來檢查perl/cgi文件,它工作正常。這就是我如何在command prompt運行我的代碼:在AJAX中執行Perl/CGI腳本而不使用服務器

D:\>PerlExecutables\strawberry_32\perl\bin\perl.exe C:\Users\UserXYZ\Desktop\PerlExamples\test.cgi

的原因是我不能做我的機器上的任何一種安裝方式,也是我不想通過服務器像ApacheIIS來運行它。 這是如何實現的?通過傳遞perl.exe路徑執行或其他選擇,是否有任何方法可以使腳本在AJAX中工作?

謝謝!

+4

如果您可以運行Perl並部署CGI腳本,則還可以在本地主機上部署充當Web服務器的Perl程序。一個HTTP服務器肯定需要參與,瀏覽器將不允許你直接運行程序。 – Thilo

+1

你可能想檢查基於perl的web服務器,http://mojolicious.org/perldoc/Mojo/Server/CGI –

+0

@Thilo我找到了https://metacpan.org/pod/HTTP::Daemon,但每次URL保持不變如果你可以運行提供的示例 –

回答

2

一種方法是使用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 

默認情況下,它會打開一個服務器上的3000端口上的本地主機。您將需要能夠安裝Perl模塊。既然你有草莓Perl不應該是一個問題。在最壞的情況下,只需使用local :: lib即可。

您還需要能夠打開端口進行收聽。如果你不能找到其他解決方案,而不是讓管理員安裝一個真正的全尺寸Web服務器。


PSGI協議和Plack工具是一個簡單易用的CGI替代品。它們讓你變得非常靈活,同時使持續運行大型應用程序變得容易。

相關問題