国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Perl > 正文

Perl語言全面編譯(一)

2019-11-18 17:23:51
字體:
來源:轉載
供稿:網友
簡 述
 
本文將詳細講述Perl的編譯方法,獻給所有熱愛、喜歡Perl的程序員們?!?br>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技術的服務器處理部分罷了,真正的程序是程序本身,而不附帶任何其它特性?!?br>我認為好的教學文章,應該讓讀者充分了解內容,充分擴展層面。諸如編寫一個Httpd程序,有很多傳統的程序員根本不了解 http的通訊協議,即使講了很多內容,但是仍然搞得半懂不懂。本文將會充分擴展層面,讓讀者了解更多的技術資料,而不必看完本文后又要去尋找關聯技術資料。同樣國內目前有很多技術性書籍,都是來自國外的譯本,但是很多譯者并非此技術專家,在翻譯的時候很多東西無法充分理解,帶來的時間上的障礙。我希望國內的編程專家能夠寫一些有用的技術文章和書籍,因為我看過很多國人自己寫的文章都容易理解和操作。但是問題在于都偏向與基礎教學,目前急切地需要有更深層次的技術資料?!?br>   
內容大綱: 
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編譯程序的高效良好的開發環境和模式?!?br>   
第一節 PerlApp和PerlSvc編譯方法
 
PerlApp和PerlSvc是ActiveState 公司開發的,它屬于 Active Perl Dev Kit(PDK)產品。本編譯方法只適合于Windows2000上運行,其它系統均無法正常使用,編譯程序必須是標準Perl和ActivePerl?!?br>PDK下載地址:http://ftp.tanshuai.net/pub/  ftp://ftp.tanshuai.net/pub/  
PerlApp和PerlSvc,前者是標準的應用程序,后者是Windows2000的服務程序(類似與IIS,一開機就啟動的服務程序,而且無法中斷它的運行)。他們有兩種運作模式:依靠(Dependent)和獨立(Freestanding),“依靠”模式程序運行的系統上必須有Perl解析器和相關模塊,這樣的程序相對較小;“獨立”模式,Perl解析器等相關模塊都會完全嵌入在程序之中,這樣的程序在任何Windows2000操作系統上都可以順利運行,而不需要額外的支持,但是程序相對較大?!?br>使用方法: 
標準使用方法(“依靠”模式): 
perlapp <腳本名> 
這樣程序就會創建一個以腳本名命名的可執行文件<腳本名.exe> 
“獨立”模式: 
perlapp(或者perlsvc) –f <程序名> 
定義輸出可執行文件名: 
perlapp(或者perlsvc) –e=tanshuai.exe test.pl 
它將會把test.pl文件輸出的可執行文件名改為“tanshuai.exe”?!?br>設置程序屬性: 
perlapp(或者perlsvc) -i=<類表> <程序名> 
類表名 目標項目 
Filenumber 文件號碼 
Productnumber 產品號碼 
Productname 產品名稱 
Legaltrademarks 合法商標 
Filedescription 文件說明 
Originalfilename 原文件名 
Fileversion 文件版本 
Comments 注解 
Productversion 產品版本 
Companyname 公司名稱 
Internalname 內部名稱 
Legalcopyright 版權 
 
這個時候有些人可能不大明白,這個是干什么用的。如果你曾經編寫過Win32程序,那就會知道,它是Windows程序的版本說明(如圖1)。 



圖1 Perl.exe文件的版本說明 
名稱與數值用“;”分開。而且所有項目值都需小寫?!?br>清理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=<文件列表> <程序名> 
如果你希望在程序內部打開文件,請使用這個命令?!?br>如:open(FILE,“./PerlAPP.TXT“);@FILE=;close(FILE); 
這樣就必須打開“PerlAPP.TXT“文件,但是你如果把它置入程序,它將會在內存中打開。(無法寫入) 
報告嵌入模塊錯誤: 
perlapp(或者perlsvc) -r <程序名> 
一些模塊無法嵌入,使用該命令可以得出相關信息?!?br>輸出詳細信息: 
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函數未被支持。 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 汉沽区| 苗栗市| 临西县| 大石桥市| 琼结县| 彝良县| 梁山县| 霍林郭勒市| 乌恰县| 常州市| 浦北县| 罗城| 安新县| 沧州市| 九寨沟县| 华宁县| 剑阁县| 南平市| 丰镇市| 重庆市| 中山市| 宣恩县| 囊谦县| 容城县| 海兴县| 孝义市| 万源市| 阜南县| 龙泉市| 平武县| 尼玛县| 华宁县| 铜鼓县| 马鞍山市| 松江区| 健康| 乾安县| 雷州市| 宣汉县| 桐梓县| 黔江区|