2012-08-13 217 views
0

我一直在尋找關於如何從html網頁運行perl程序的教程。我無法找到一個教程,甚至是一個很好的起點,可以清楚地解釋如何做到這一點......從網頁運行perl cgi腳本(html)

我想要做的是在perl中使用WWW :: mechanize來爲我填充一些信息一個WordPress站點的結尾。在我能做到這一點之前,我想只看到瀏覽器中顯示的檢索到的HTML,就像實際的網站將顯示在瀏覽器中一樣。這裏是我的Perl:

print "Content-type: text/html\n\n"; 
use CGI; 
use WWW::Mechanize; 
my $m = WWW::Mechanize->new(); 



use WWW::Mechanize; 
$url = 'http://www.storagecolumbusohio.com/wp-admin'; 
$m->post($url); 
$m->form_id('loginform'); 
$m->set_fields('log' => 'username', 'pwd' => 'password'); 
$page = $m->submit(); 
$m->add_handler("request_send", sub { shift->dump; return }); 
$m->add_handler("response_done", sub { shift->dump; return }); 
print $page->decoded_content; 

此代碼從命令提示符(實際上我在mac,所以終端)的作品。不過,當用戶點擊鏈接時,我希望它能從網站上運行。

我已經學到了一些東西,但是因爲我是perl noob,所以對我來說很困惑。看起來有兩種方法可以做到這一點(我可能是錯的,但這是我從什麼iv'e閱讀)收集。人們不斷談論的一種方法是使用某種「模板方法」,如embperl或modperl。另一個是作爲cgi腳本運行perl程序。從我在各種網站上看過的內容看來,cgi似乎是最簡單和最常見的解決方案?爲了做到這一點,我被告知我需要在httpd.conf文件中更改幾行。我在哪裏可以找到該文件來改變它?我知道我在apache服務器上,但我的網站由dreamhost託管。我仍然可以訪問這個文件,如果是的話如何?

任何幫助將不勝感激,因爲你可能會告訴我沒有線索,我很困惑。

+0

當然,如果你使用主機,那麼獲得perl可能會有更多的工作,但:http://www.thesitewizard.com/archive/addcgitoapache.shtml – TheZ 2012-08-13 20:59:57

回答

1

To use a cgi script on dreamhost,就足夠了

  1. 給腳本.cgi擴展
  2. 把腳本到Web服務器
  3. 顯眼的地方給腳本正確的權限(至少0755)

你可能想看看你是否可以得到一個玩具腳本,比如說,

#!/usr/bin/perl 
print "Content-type: text/plain\n\nHello world\n"; 

在處理調試較大的腳本之前工作。

也就是說,我在腳本中看不到的是標題。我想你會想這樣說

print "Content-type: text/html\n\n"; 

之前你的其他print電話。

+0

謝謝!這仍然花了我一段時間,但我終於明白了感謝您的幫助。您發佈的鏈接「在Dreamhost上使用cgi腳本」與本網站結合使用:http://www.javascriptkit.com/howto/adashimar/index.shtml和以下網址:http://www.stadtaus.com/ en/tutorials/chmod-ftp-file-permissions.php非常有幫助。我能從那裏弄清楚。感謝@mob的幫助! – 2012-08-14 21:53:25

+0

僅供參考用於面臨類似問題或卡在同一地點的任何人,我不必將文件擴展名更改爲cgi。我使用了文件夾方法,其中的.htaccess文件將運行該文件夾中的所有文件作爲cgi腳本(請參閱上面@mob發佈的dreamhost維基鏈接)。一旦我這樣做了,我不得不進入filezilla,右鍵單擊perl文件並單擊「文件權限」。然後在權限表單中給文件755數字值。花了我一段時間才弄明白,因爲所有的事情都假設你知道一些事情,並留下了一大塊難題。 – 2012-08-14 21:59:27

0

我建議你先在你的本地服務器上測試你的代碼。 我假設你正在使用Windows或類似的問題,所以使用xamp http://www.apachefriends.org/en/xampp.html或者調整http://www.wampserver.com/en/或者得到像http://www.debian.org這樣的真正的操作系統(你也可以在vm中運行它)。

你不應該打印的內容類型那樣的,而是用「打印頭」,看到這個頁面: http://perldoc.perl.org/CGI.html#CREATING-A-STANDARD-HTTP-HEADER%3a

確保您已在Apache服務器的perl的正確配置,也看到這些公地問題: http://oreilly.com/openbook/cgi/ch12_01.html

另請參閱How can I send POST and GET data to a Perl CGI script via the command line?以在命令行上進行測試。