GB | BIG5
|
| 首頁 > 編程技術 > Perl > 正文 |
 |
| Perl 語言全面編譯(一) |
| http://www.ccw.com.cn 天水-S.Tanshuai (2001-04-19 15:03:46) |
簡 述
本文將詳細講述Perl的編譯方法,獻給所有熱愛、喜歡Perl的程序員們。
Perl自從面世以來1.0版本到現今的5.6版本,一直都有編譯程序,主要因為國內的中文資料很少,大多數人不願意去看或者不懂得英文資料,所造成不知道器編譯方法。即使是很多Perl界高手也同樣有此類問題。Perl編譯方法五花八門,各種編譯方法都有其重要的意義和弱點。另一方面Perl編譯方法不能流行的原因是,本身Perl就是一個免費的東西,人們不希望Perl成為編譯的商品,但是在國內也是因此而拖累了Perl的發展步伐。但在此我不讚成也不推崇Perl程序的編譯,Perl編譯有小些局限性,但是仍然可以完成所有任務,想要達到良好的編譯效果,需要高超的編程技術和相關經驗,重要的是對OOP(面向對象的程序設計)的了解,將會使得你的Perl程序更加易編譯,運行速度更快,兼容性更廣等特性。
以前我寫過Perl在可嵌入式技術方面技術文章。它的優勢和其它嵌入語言無法比擬的兼容性,Perl不但擁有PHP的可嵌入HTML技術,也同樣支持用PerlScript寫ASP的。但是如果你希望你的程序可以編譯執行,那可嵌入式方法顯然是不可能的。我幾乎不用ePerl、mod_perl等可嵌入式Perl HTML 頁,但是我更不讚成很多人把HTML置入程序之中,這兩種方法都有其好處以及壞處。我推崇模板方式的編寫方法,大家可能也用過模板方式,可能認為它在頁面量處理方面有很多問題?但是,那些都是陳舊古老的方式,也是說明你並未精通Perl語言,採用模板方式調入HTML頁是相當好的方法,幾乎可以達到所有可嵌入式技術的功效,也可以像HTML程序內置方式的靈活操縱性。我覺得程序員和HTML制作員是不同的,如果我們採用ePerl、PHP、ASP,那你就不是一個真正的程序員,那只是HTML技術的服務器處理部分罷了,真正的程序是程序本身,而不附帶任何其它特性。
我認為好的教學文章,應該讓讀者充分了解內容,充分擴展層面。諸如編寫一個Httpd程序,有很多傳統的程序員根本不了解 http的通訊協議,即使講了很多內容,但是仍然搞得半懂不懂。本文將會充分擴展層面,讓讀者了解更多的技術資料,而不必看完本文又要去尋找關聯技術資料。同樣國內目前有很多技術性書籍,都是來自國外的譯本,但是很多譯者並非此技術專家,在翻譯的時候很多東西無法充分理解,帶來的時間上的障礙。我希望國內的編程專家能夠寫一些有用的技術文章和書籍,因為我看過很多國人自己寫的文章都容易理解和操作。但是問題在都偏向與基礎教學,目前急切地需要有更深層次的技術資料。
內容大綱:
1) PerlApp和PerlSvc編譯方法 New! Easy!
2) Perl2Exe 編譯方法
3) PerlCC 編譯方法
4) PerlCC之Bytecode 編譯解析法Just Like Java Program! New! Cool!
5) OOP面向對象的程序之為編譯而設計
6) HTML模板編程方式真正的WEB程序(Program) Good!
7) 聯合編譯以及實例 Advanced!
說明:如何選擇閱讀以上內容是很重要的,以上內容並非適合各個階層的Perl程序員。PerlApp和PerlSvc適合在Windows2000環境下編程初學者和一般的Perl程序設計人員,Perl2Exe適合在非Windows和Windows95/98/Me 環境下編程初學者和一般的Perl程序設計人員。PerlCC適合與任何操作系統平台,但是操作復雜,適合中級程序員和高級程序員開發大宗商業化軟件(公眾客戶)使用。ByteCode是一種新型的編譯方式,類似Java,它需要Perl解析器的支持,但是它是靈活性最高的編譯方式,適合中級程序員和高級程序員開發大宗商業化軟件(服務商)使用。如果你希望你可以編寫出一個出色的Perl編譯的程序,那你必須閱讀第4節,它將告訴你如何使用面向對象的程序設計技術來實現Perl編譯程序的高效良好的開發環境和模式。
第一節 PerlApp和PerlSvc編譯方法
PerlApp和PerlSvc是ActiveState 公司開發的,它屬 Active Perl Dev Kit(PDK)產品。本編譯方法只適合Windows2000上運行,其它系統均無法正常使用,編譯程序必須是標準Perl和ActivePerl。
PDK下載地址:http://ftp.tanshuai.net/pub/ ftp://ftp.tanshuai.net/pub/
PerlApp和PerlSvc,前者是標準的應用程序,者是Windows2000的服務程序(類似與IIS,一開機就啟動的服務程序,而且無法中斷它的運行)。他們有兩種運作模式:依靠(Dependent)和獨立(Freestanding),“依靠”模式程序運行的系統上必須有Perl解析器和相關模塊,這樣的程序相對較小;“獨立”模式,Perl解析器等相關模塊都會完全嵌入在程序之中,這樣的程序在任何Windows2000操作系統上都可以順利運行,而不需要額外的支持,但是程序相對較大。
使用方法:
標準使用方法(“依靠”模式):
perlapp <腳本名>
這樣程序就會創建一個以腳本名命名的可執行文件<腳本名.exe>
“獨立”模式:
perlapp(或者perlsvc) f <程序名>
定義輸出可執行文件名:
perlapp(或者perlsvc) e=tanshuai.exe test.pl
它將會把test.pl文件輸出的可執行文件名改為“tanshuai.exe”。
設置程序屬性:
perlapp(或者perlsvc) -i=<類表> <程序名>
類表名 目標項目
Filenumber 文件號碼
Productnumber 產品號碼
Productname 產品名稱
Legaltrademarks 合法商標
Filedescription 文件說明
Originalfilename 原文件名
Fileversion 文件版本
Comments 注解
Productversion 產品版本
Companyname 公司名稱
Internalname 內部名稱
Legalcopyright 版權
這個時候有些人可能不大明白,這個是幹什用的。如果你曾經編寫過Win32程序,那就會知道,它是Windows程序的版本說明(如圖1)。
圖1 Perl.exe文件的版本說明
名稱與數值用“;”分開。而且所有項目值都需小寫。
清理PerlCtrl 的DLL:
perlapp(或者perlsvc) c <程序名>
添加模塊:
perl(或者perlsvc) a=<列表>
如:perlapp tanshuai.pl a=IO:Socket;XML::Parser;Tanshuai::Http;MP3;
這樣模塊IO:Socket,XML::Parser,Tanshuai::Http和MP3就被置入程序內。
Perl圖形界面:
perlapp(或者perlsvc) g <程序名>
如果你的程序非命令行或者CGI,是T/K圖形界面的話,就需要採取這個命令。
排除 Perl56.dll:
perlapp(或者perlsvc) x <程序名>
Perl56.dll是PerlApp執行的關鍵,但是如果你不希望他和你的程序在一起,你可以把它排除,另行安置,但是主意,一定要保証它的存在否則就無法正確運行
添加額外文件:
perlapp(或者perlsvc) b=<文件列表> <程序名>
如果你希望在程序內部打開文件,請使用這個命令。
如:open(FILE,“./PerlAPP.TXT“);@FILE=;close(FILE);
這樣就必須打開“PerlAPP.TXT“文件,但是你如果把它置入程序,它將會在內存中打開。(無法寫入)
報告嵌入模塊錯誤:
perlapp(或者perlsvc) -r <程序名>
一些模塊無法嵌入,使用該命令可以得出相關信息。
輸出詳細信息:
perlapp(或者perlsvc) <程序名> -v
如:perlapp tanshuai.pl v
輸出:
Using myScript.pl for script name
Input script name: tanshuai.pl
Output exe name: tanshuai.exe
Exe Mode: Perl Dependent
Creating dependent executable
解釋:PerlApp 和PerlSvc無法在Windows95/98/ME PerlApp使用的部分Win32 API函數未被支持。
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
Perl 語言全面編譯(四) (2001-04-19 15:11:45) Perl 語言全面編譯(三) (2001-04-19 15:09:06) Perl 語言全面編譯(二) (2001-04-19 15:05:32) Perl 語言全面編譯(一) (2001-04-19 15:03:46)
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |