PerlScript編寫ASP(轉載)_應用技巧

來源:互聯網
上載者:User
Nighthawk注: 
儘管這些年來Perl為廣大編程愛好者所熟悉,但卻對Perl存在一個令人尷尬的誤解,以為Perl就是CGI,經常有人問我Perl和CGI,和PHP,和ASP比較如何如何,這是實在是件很遺憾的事情.這裡特地貼出下面這篇文摘,也許能減少一些這方面的 誤解. 

本文將進一步講述Perl在可嵌入技術的廣域性,和PerlScript 在指令碼技術領域的功用。以前的文章我說了ePerl、Embed Perl和Mod_Perl 技術,它們都是單獨領域的技術,是在本身基礎上的延伸。而本文將講述如何用PerlScript寫ASP,或者是說在ASP中寫PerlScript。 

學習本文後,你將會知道Perl是如何強大,它的相容性是沒有任何語言可以比的。在目前Web頁編程中,最為盛行的技術:CGI、ASP、PHP、JSP等,其中CGI就包含了Perl、C/C++、JAVA等技術,在CGI 技術中流行的語言就是Perl,Perl的曆史悠久,有著傳統的編程方式和自然編寫方法,在ASP、PHP、JSP等技術沒有出現之前,是WEB也編程中最為流行或者說是標準的編程技術。經常有人拿Perl或是CGI與ASP、PHP、JSP等技術相比,我在這裡想重申一次,Perl、CGI與ASP、PHP、JSP不是一個領域一個類別,就好比水果和紅薯他們如何比?這些配比方法在小學中就講述得很詳細了,所以希望廣大程式技術人員不要被誤導。Perl是一個語言,它與C/C++、Java、Basic等是一個類別的一個領域的,而ASP(Active Server Page)、PHP(Personal Home Page)、JSP(Java Server Page),大家可以從英文中看出他們後面都有Page,簡單的你可以理解成為超文本語言HTML的伺服器端語言,而真正輸出的HTML是用戶端語言。我編寫CGI,特別是用Perl編寫了幾年的程式,寫了無數的商業軟體,然而現在很多輿論對Perl和CGI評價非常不好,然而這些都是非常不負責任的評價,對這個行業帶來了很大的損失,嚴重減慢了Perl在國內發展的速度。而PerlScript 是Perl語言中的指令碼語言,並非Perl指令碼,也就是說它我們常說的Perl是不同的,它是Perl的一個指令碼語言。類似於VB,大家知道VB有VBScript,PerlScript 就好像VBScript,也可以說是VBScript同類,理解這一點就好理解以下的內容。大家知道VBScript分為用戶端、伺服器端,用戶端可以在瀏覽器(諸如:Internet Explorer、Netscape)中應用,很多網站就用VBScript 做一些用戶端的分析處理工作;伺服器端就是大家經常在ASP裡面寫的VBScript一樣"<%@ LANGUAGE="VBSCRIPT" %>"。PerlScript 是Perl的一個子集,Perl->PerlScript。 

PerlScript 在實際應用中有很多地方與平時寫的Perl程式是不一樣的,比如我們一般顯示輸出資訊都用"print 'info\n\n';",而在使用PerlScript的時候就不能使用這樣的文法,否則將會造成文法無法識別;PerlScript 在默寫方面使用的是物件導向技術為基礎。所以如果想輸出資訊,必須採取對象方法:"$Response->Write("info");"。 

如何在動態服務頁中(ASP)應用PerlScript 作為編寫指令碼呢?平時我們寫ASP的時候都需要聲明語言類型,例如我們用VBScript編寫ASP時候,必須勝名"<%@ LANGUAGE="VBSCRIPT" %>",在使用PerlScript 的時候也是一樣,聲明格式是一樣的"<%@ Language=PerlScript %>"。現在我們就可以開始寫PerlScript 的ASP了。是不是有些興奮?我們按照慣例,都要寫一個"hello world"指令碼啦。其實ASP可以不用寫的什麼指令碼的,可以在HTML直接打出,然而現在這裡是為了能夠讓您更容易的瞭解PerlScript在ASP的具體應用。現在我們建立第一個ASP頁 
<%@Language=PerlScript%> 
<HTML> 
<TITLE> PerlScript Test </TITLE> 
<% 
for($i=0; $i<=10; $i+=2) { 
$Response->Write(""); 
$Response->Write("Hello World! 
"); 

%> 
</HTML> 
在這裡大家一定要注意 
"$Response->Write("");"為什麼不用print呢?因為print 是對程式而言,是直接的,而ASP是間接的輸出。在ASP裡面使用PerlScript是自動應用了ASP相關模組(use ASP;)。這個頁內容是進行迴圈依次輸出字的大小。 

訪問得到伺服器的變數,也不是以前那麼樣子了,命令是 
"<%= $Request->ServerVariables('SERVER_SOFTWARE')->Item() %> " 

我們一般在Perl裡面則是 
"$ENV{'SERVER_SOFTWARE'};" 
得到POST或者GET資料,比以往在Perl程式中容易很多。 
POST:"$Request->Form('name')->Item()" 
而GET: "Request->QueryString('name')->Item()" 

在輸出非"text/html"類型資料的時候,首先要使用模組:"Win32::OLE::Variant;",比如輸出"image/GIF"Perl程式方法是: 
print "Content-type:image/GIF\n\n"; 
而在PerlScript中用: 
$Response->{ContentType} = "image/GIF"; 

輸出資料方法則是: 
$Response->BinaryWrite(Win32::OLE->Variant(VT_UI1, $image)); 
取得ASP的錯誤資訊: 
"$ASPError = $Server->GetLastError();" 
設定瀏覽器Cookies:" 
$Response->Cookies->SetProperty( 
'類別', 
'Cookies', 
'這是一個Cookies' 
); 

設定允許URL:" 
$Response->Cookies('Cookie')->{Domain} = 'tanshuai.net'; 

設定到期時間:" 
$Response->Cookies('someCookie')->{Expires} = 'January 1, 2001'; 

資料庫連接:" 
<% 
#建立串連ADOBD的對象 

$Conn = $Server->CreateObject("ADODB.Connection"); 

#開啟系統 DSN 

$Conn->Open( "Tanshuai" ); 

# 執行 SQL 查詢 

$RS = $Conn->Execute( "SELECT * FROM Orders" ); 

#取得目標查詢隊列數 
$count = $RS->Fields->{Count}; 

# 輸出顯示每個隊列名 

for ( $i = 0; $i < $count; $i++ ) { 
$Response->Write( $RS->Fields($i)->Name ); 
$Response->Write(" 
"); 
}; 

# 輸出所有隊列值 

while ( ! $RS->{EOF} ) { 
for ( $i = 0; $i < $count; $i++ ) { 
$Response->Write(" "); 
$Response->Write($RS->Fields($i)->{Value}); 
$Response->Write(" 
"); 
}; 

#移動到下一個紀錄 

$RS->MoveNext(); 
}; 

# 關閉所有對象 

$RS->Close(); 
$Conn->Close(); 
%> 

在PerlScript中sub、if、else、else if、for each、while、聲明變數、開啟檔案、字元處理都、調用模組檔案都是按照以前的樣子。只是在對於Web伺服器間的特殊處理,需要使用特殊方法。 

另外#在指令碼編寫的時候仍然是作為註解符號,而且一定要記得每個指令碼命令結束後必須要填寫";"結束符號。 

通過本文您已經掌握了如何用Perl的Perl指令碼(PerlScript)編寫ASP了。Perl的強大功用和廣泛的相容性,是沒有任何一個技術可比的。目前Perl可嵌入技術包含:C嵌入Perl、Java 嵌入Perl、ASP嵌入Perl、Apache嵌入 Perl、WSH嵌入Perl、WSC 嵌入Perl…… 

Perl其實是一個簡單易學的通用資訊技術語言,我覺得現在普及電腦,首先應該普及的就是Perl語言了,PERL比BASIC自然得多。好像人們在說話,它的編寫方式就好像我們處理事務一樣。學會了Perl,不但對你學習其它語言(諸如:C/C++、JAVA)有很大的促進、協助並加快學習進度,Perl的強大發展趨勢,可以讓您"投機取巧",在其它流行的編程技術中嵌入,這樣在您不懂得或是覺得一種演算法很麻煩的時候,用Perl來協助你快捷的完成。讓您在其它語言中從Perl慢慢進化成該種語言,是相當順利的平穩過渡。我發現在學習Perl以後,學習其它語言速度有很大的加快。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.