2012-06-07 57 views
1

我已經運行此Perl代碼:如何在Windows 7系統上運行我的第一個Perl代碼?

#!/usr/bin/perl 
print "content-type: text/html \n\n"; 
print "Hello World.\n"; 

我已經在兩個方面試了一下,第一個是Testing your Perl installation,但是當我通過這種方式運行,它有一些麻煩,它要求我選擇一個程序我可以運行它,但沒有運行。

第二種方法是使用Perl IDE的Padre first script,但是當我編寫Perl代碼並嘗試保存它時,它不會顯示我Perl文件的擴展名,所以我不能將它保存爲Perl文件,我做?

+0

那麼第一個鏈接是正確的方式來做它在Windows上。唯一的區別是Windows Vista/7在開始菜單中沒有「運行」條目。所以你必須使用開始菜單中的搜索框並輸入「cmd.exe」,然後按回車鍵執行。這樣你就可以啓動一個cmd提示符,你可以在其中執行perl-command。 - 編輯:執行perl腳本類型'perl nameofyourfile.ext'(你必須在正確的目錄中)。 – vstm

+0

/usr/bin/perl也不會成爲Windows系統上Perl解釋器的正確路徑。另外,如果您通過Web服務器進行調用,則需要確保服務器已配置爲正確運行Perl腳本。通常它需要一個.cgi或.pl擴展名。 – Ilion

+0

嗯......你**已經安裝了Perl([DWIMPerl](http://dwimperl.com/),[Strawberry Perl](http://strawberryperl.com/)或[ActivePerl](http ://www.activestate.com/activeperl)),對嗎? – 2012-06-07 15:26:24

回答

1

你的代碼看起來像你想要一個CGI程序。 CGI意味着你通過網絡瀏覽器調用你的程序並返回一個網站。雖然vstm的評論當然適用於非cgi程序,但您的示例需要更多的東西才能實現這一目標。

您將需要安裝Web服務器。看看xampp。安裝和維護起來很簡單,並且附帶了一個mysql以及一個apache安裝。我推薦lite版本,因爲它沒有全部的開銷。

一旦你安裝了它,你需要進行一些配置,以便它可以運行你的perl腳本。我認爲你已經安裝了Active Perl。然後你需要調整Apache配置。

c:\xampp\apache\conf\httpd.conf

你需要找到一個說

<Directory "C:/xampp/htdocs"> 

線並閱讀註釋(標有#)。您必須在<Directory>部分中添加ExecCGI。爲每個你想要perl腳本運行的目錄做到這一點。然後尋找一條線,說

AddHandler cgi-script .cgi .pl .asp 

並確保它沒有被註釋掉。

一旦你做了,把你的程序在c:\xampp\htdocs文件夾(cgi-bin也應該工作),並改變shebang-line(與#!的第一行)到你已經安裝了活動的Perl,例如C:\perl\bin\perl.exe。它告訴apache它應該使用什麼程序來執行perl腳本。

此外,一些行添加到您的代碼:

#!C:\perl\bin\perl.exe 
use strict; 
use warnings; 
use CGI; 
use CGI::Carp('fatalsToBrowser'); 
print "Content-type: text/html \n\n"; 
print "Hello World.\n"; 

現在你需要運行的Apache Web服務器。在xampp安裝目錄中有幾個控制apache和mysql的批處理文件。還有一個xampp-control.exe。運行。在新窗口中,單擊Apache旁邊的開始按鈕。

在您的瀏覽器中,轉至http://localhost/<yourscript.pl>。現在應該說「Hello World!」。

如果沒有,請確保您沒有運行Skype。它會阻止Apache嘗試運行的端口80。你需要將apache的端口改爲別的。請參閱this video


在我做的代碼和他們做了什麼變化的幾句話:

  • use strict;應該總是在你的代碼。它迫使你遵守某些準則並編寫更好的代碼。這在Hello World程序中可能看起來很奇怪,但請仍然使用它。
  • use warnings;告訴你可能出錯的事情。警告不是錯誤,而是perl對你可能不認識的東西有幫助。用它。
  • use CGI使程序的輸出轉到網絡服務器。您在使用CGI程序時需要這些。
  • print "Content-type: text/html \n\n";是需要的,因此瀏覽器知道該期待什麼。在這種情況下,一個HTML網站。它被稱爲HTTP-標題幷包含一個MIME類型。
  • use CGI::Carp('fatalsToBrowser');使錯誤進入瀏覽器。沒有它,除非你查看Apache的錯誤日誌,否則你永遠不會知道它們。
+0

在這個維基上可能有一些好的帖子 - 我沒有找到他們。請隨意添加一些鏈接。 – simbabque

相關問題