2011-11-20 49 views
0

我是Perl編程新手。我怎樣才能使用它而不是PHP?在Xampp或PHP中,我們有「htdocs」來存儲我們的.php文件,但我怎樣才能保存我的.pl文件?如何在Perl中爲WWW編寫服務器端代碼?

當我嘗試通過本地主機打開一個.pl時,整個文件都是可下載的,不像在php中打開.php時,執行php代碼。

+1

至少給你的問題相關的標題。現在它讓別人不知道這個問題。 – Bart

回答

4

最簡單的選擇是將您的Web服務器配置爲支持CGI,然後編寫您的Perl以遵循CGI協議(CGI module對此有幫助)。如果您願意,您可以配置服務器執行任何擴展名爲.pl的文件。

稍微複雜但更靈活的是PSGI/Plack。這是一組中間件,您可以通過多種方式連接到Web服務器(例如FastCGI或mod_perl)以獲得更好的性能。這也提供了一些很好的調試選項。有一個advent calendar style guide,你可能會覺得有用。

0

從一個天真的方法,這聽起來像你的網絡服務器配置不正確;它應該解釋文件,而不是傳遞出來。

出於好奇,如果您知道PHP,爲什麼要使用Perl作爲網絡資料?我以爲我讀了一篇文章,說PHP在用於顯示網頁時比Perl快。

+1

我在Google上發現的第一個基準測試表明,Perl比PHP快得多。 (不知道如何代表現實世界的東西)。你可能已經找到了比較CGI和mod_php的東西; CGI與每個請求相關的啓動成本很高。 – Quentin

+0

即使在CGI模式下並且使用DBIx :: Class ORM,Perl也可以很快。 –

+2

對於超過90%的網頁,速度幾乎無關緊要。你的早期實驗是每分鐘處理1000次命中嗎?不見得。在Web服務的基礎上,天真地將「Perl」與「PHP」進行比較的任何基準測試都不值得它的組成部分。關於每個環境的web服務器選擇和配置都有很多問題,因此任何聲明通常都是愚蠢的。 – daotoad

0

如果你想從Perl5 web開發開始,它是有用的開始CGI,但 不是必要的。

CGI模塊。你可以看看HTTP如何工作 以及Apache或任何你使用的服務器如何調用你的CGI程序。良好的開端是使用這個腳本 :

#!/usr/bin/env perl                

use strict;                  
use warnings;                 

print "Content-type: text/html\n\n";            
print "<html>";                       
print "<body>";                 
print "<table>";                 
for my $var_name (keys %ENV) {             
    print "<tr>";                 
    print "<td>$var_name</td>";             
    print "<td>$ENV{$var_name}</td>", "\n";          
    print "</tr>"                 
}                    
print "</table>";                
print "</body>";                 
print "</html>"; 

然後看着像「REQUEST_URI」變量「REQUEST_METHOD」和「QUERY_STRING」,你可以得到 知道什麼CGI模塊在後臺做。

要知道,你的腳本必須被設置爲運行CGI 腳本,如目錄是很重要的:

ScriptAlias /cgi_bin/ /var/cgi_bin/            

<Directory /var/cgi_bin/>              
    Options +ExecCGI                       
    AddHandler cgi-script .cgi .pl             
</Directory> 

和文件必須由運行服務器的任何用戶(例如爲可執行。 Apache2),並且可讀。

此後,您可以看看現代工具包,如Catalyst & Mojolicious。我建議你mojolicious 。還有一個名爲Dancer的網絡框架。

關於框架,催化劑在這裏很長時間,它的工作原理,但它帶來了一些牛皮紙。這試圖通過像mojolicious這樣的新框架來解決。 Mojolicious不要 幾乎沒有外部CPAN依賴關係。

1

XoR已經提到過它,但我想重申:Mojolicious!它有一個模板引擎,可以讓你在HTML中混合使用Perl代碼,但是你可以在應用程序本身中完成大部分繁重的工作。 Mojolicious還包括(幾個)內置的Web服務器(一個用於測試,一個用於生產),比Apache更易於使用。

易於安裝:只需使用cpan(或其他)安裝Mojolicious

寫一個基本的腳本:(簡單的Hello World):

#!/usr/bin/env perl 

use strict; 
use warnings; 

use Mojolicious::Lite; 

get '/(:name)' => {name => 'World'} => sub { 
    my $self = shift; 
    $self->render('index'); 
}; 

app->start; 

__DATA__ 

@@ index.html.ep 
<!DOCTYPE html><html> 
<head> 
    <title> Hello <%= $name %> </title> 
</head> 
<body> 
    Hello <%= $name %> 
</body> 
</html> 

並運行:morbo myapp.pl

+0

請注意,__DATA__似乎無法在我的perl XAMPP安裝在Windows上工作,並且您必須將index.html.ep放入它自己的模板目錄中的文件中http://mojolicio.us/perldoc/Mojolicious/Lite# External_templates –

+0

如果通過Strawberry Perl或activestate而不是XAMPP運行,會發生什麼?有沒有關於XAMPP包含哪些Perl的信息? –

+0

似乎很難找出哪種類型的perl XAMPP附帶。 XAMPP網站上沒有提到什麼類型。 perl -v只是說5.10 http://win32.perl.org/wiki/index.php?title=Win32_Distributions#XAMPP_.2B_Perl-Extension –

相關問題