?? 01_4_13_3.asp.html
字號(hào):
<html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<TITLE>計(jì)算機(jī)世界網(wǎng)-Perl 語(yǔ)言全面編譯(七)</TITLE></HEAD>
<style>
.a14{font-size:14px;text-indent:25px;line-height:20px}
.f{font-size:18px;color=#0f3ccd}
img{border:0px;}
td,p,input{font-fammily:verdana,宋體;font-size:12px;}
A:link {text-decoration:none;color:black}
A:visited {text-decoration:none;color:#80006f}
A:hover {text-decoration:underline;color:black}
</style>
<center>
<BODY topmargin=2 leftmargin=0>
<style>
.v12{font-size:10pt;color:"#ffffff";FONT-WEIGHT: bold}
.v14{font-size:14px;text-indent:25px;line-height:20px}
img{border:0px;}
td,p,input,select{font-fammily:verdana,宋體;font-size:12px;}
A:link {text-decoration:none;color:black}
A:visited {text-decoration:none;color:#80006f}
A:hover {text-decoration:underline;color:black}
</style>
<style>
.v13{font-size:10pt;color:"#ffffff";FONT-WEIGHT: bold}
.v12{font-size:13px;color:"#4C029C";FONT-WEIGHT: bold}
.v14{font-size:14px;text-indent:25px;line-height:20px}
img{border:0px;}
td,p,input,select{font-fammily:verdana,宋體;font-size:12px;}
A:link {text-decoration:none;color:black}
A:visited {text-decoration:none;color:#80006f}
A:hover {text-decoration:underline;color:black}
</style>
<!--頭-->
<table align=center cellpadding="0" cellspacing="0" border="0" width="767">
<tr><td valign=bottom>
<table cellpadding="0" cellspacing="0" border=0>
<tr><td valign=top><img src="ccwlogo7.gif"></td></tr>
<tr><td height="27" valign=top><img src="knowledn.gif" width="207" height="27"></td></tr>
</table></td>
<td valign=bottom width=556 bgcolor="#4c029c" height=96>
<table cellpadding="0" cellspacing="0" border=0 width=556 bgcolor="#4c029c" height=96>
<tr><td height=25 valign=bottom bgcolor="#ffffff" colspan=2 ><img src="top00007.gif" usemap="#F"></td></tr>
<tr valign=middle >
<td align=center valign=middle height="60" align=center>
<!-- <a href="/search/" target=_blank><img src="/img2/esearch.GIF" border=0 width=468 height=60></a> --><a href="http://www.ccw.com.cn/html/search/thememail/" target=_blank><img src="topbannl.gif" border=0 width=468 height=60></a>
</td>
<td align=center width=15%>
<table width=95%>
<tr><td><a href="mailto:center@ccw.com.cn?subject=%E6%88%91%E8%A6%81%E6%8A%95%E7%A8%BF:" target=_blank><font class=v13>我要投稿</a><br><a href="mailto:center@ccw.com.cn?subject=%E7%BC%96%E8%AF%BB%E5%BE%80%E6%9D%A5"><font class=v13>編讀往來(lái)</a><br><a href="javascript:AddBookMark('計(jì)算機(jī)世界網(wǎng)首頁(yè)')"><font class=v13>加入收藏</a></font></td></tr>
</table>
</td>
</tr>
<tr><td bgcolor="#ffffff" height=1 colspan=2 ></td></tr>
<tr><td bgcolor="#b4aafc" height=2 colspan=2 ></td></tr></table>
<map name="F">
<area href="http://www.ccw.com.cn/" shape="rect" coords="29, 3, 61, 18" target=_blank>
<area href="http://www.ccw.com.cn/news1/" shape="rect" coords="72, 3, 143, 18" target=_blank>
<area href="http://www.ccw.com.cn/center/" shape="rect" coords="155, 2, 216, 18" target=_blank>
<area href="http://www.ccw.com.cn/work/" shape="rect" coords="225, 2, 299, 18" target=_blank>
<area href="http://www.ccw.com.cn/search/" shape="rect" coords="310, 3, 364, 19" target=_blank>
<area href="http://www3.ccw.com.cn/" shape="rect" coords="372, 2, 412, 19" target=_blank>
<area href="http://www2.ccw.com.cn/" shape="rect" coords="424, 2, 550, 18" target=_blank></map>
</td></tr>
<tr><td colspan=2 bgcolor="#b4aafc">
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr>
<td width=26% align=center><font class=v12>【2003年2月7日】 </font></td>
<td CLASS=V12> <a href="http://www.ccw.com.cn/center/topic.asp">專 題</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/tech.asp">技 術(shù)</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/prod.asp">產(chǎn) 品</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/app.asp">應(yīng) 用</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/net.asp">網(wǎng) 絡(luò)</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/prog.asp">編 程</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/skill.asp">技 巧</a> </td>
</tr>
</table>
</td></tr>
</table>
<table align=center width=680>
<tr><td align=center><br><h2><font color='#0f3ccd'>Perl 語(yǔ)言全面編譯(七)</font></h2>
<b><a href="mailto:tanshuai@BIGFOOT.COM"><font color="#0000ff">天水-S.Tanshuai</font></a></b>
<br><hr size=1 width=660 color=#f46240></td></tr></table><br>
<table align=center width=620><tr><td class=a14><font size="4"><b>第七節(jié) 聯(lián)合編譯以及實(shí)例</b></font></td></tr></table><table align=center width=620><tr><td class=a14>
本章至關(guān)重要,你已經(jīng)知道Perl的兩種最好的編譯方法。但是他們都有利弊,只要稍動(dòng)腦筋,就可以實(shí)現(xiàn)“強(qiáng)強(qiáng)聯(lián)合”,這樣可以盡量避免那些缺憾。</td></tr></table><table align=center width=620><tr><td class=a14>
聯(lián)合編譯的道理很簡(jiǎn)單,但操作起來(lái)也不那樣一帆風(fēng)順,其中有很多地方值得注意。聯(lián)合編譯主要有一個(gè)主程序和多個(gè)子程序(FILE)組成。它們之間是使用require函數(shù)連接。主程序只做連接等分析工作,子程序做細(xì)節(jié)工作,包括對(duì)象操作,模塊引用。我們采用PerlCC 翻譯C的方式來(lái)編譯主程序成為一個(gè)可以執(zhí)行的文件,在把子程序用Bytecode方式編譯,這樣即可免去無(wú)法使用部分模塊的問題,也可以直接使用Perl程序,只要在主程序的前面定義一下模塊引用路徑,方法:</td></tr></table><table align=center width=620><tr><td class=a14>
use lib ‘<路徑>’;</td></tr></table><table align=center width=620><tr><td class=a14>
這樣就可以了,把那些需要調(diào)入的模塊,放在制定路徑中就好了。而且在CGI或者Socket的網(wǎng)絡(luò)編程和頁(yè)面編程中,使用該模是有助于提高效率,降低資源占用率。如果使用整體編譯方法,那么每次啟動(dòng)必然會(huì)耗費(fèi)相當(dāng)大的內(nèi)存,同樣這個(gè)程序要重復(fù)關(guān)閉啟動(dòng),做Fast CGI也是相當(dāng)不方便的,這也是Fast CGI在Perl中的最好的方法。根據(jù)不同的請(qǐng)求套入不同的子程序。</td></tr></table><table align=center width=620><tr><td class=a14>
首先我們使用 cgi-lib.pl得去POST和GET數(shù)據(jù)(這個(gè)時(shí)候有些人會(huì)問,為什么不使用cgi.pm,我不是不想用它,而是cgi.pm在perlcc的任何編譯模式都會(huì)有問題)</td></tr></table><table align=center width=620><tr><td class=a14>
然后根據(jù)不同的請(qǐng)求,我在這里設(shè)置為action。</td></tr></table><table align=center width=620><tr><td class=a14>
例如:</td></tr></table><table align=center width=620><tr><td class=a14>
require “cgi-lib”;</td></tr></table><table align=center width=620><tr><td class=a14>
if ($in{‘a(chǎn)ction’} eq “”) {</td></tr></table><table align=center width=620><tr><td class=a14>
require “display.pl”;</td></tr></table><table align=center width=620><tr><td class=a14>
&display;</td></tr></table><table align=center width=620><tr><td class=a14>
exit;#可選</td></tr></table><table align=center width=620><tr><td class=a14>
}elsif ($in{‘a(chǎn)ction’ }eq “l(fā)ove”) {</td></tr></table><table align=center width=620><tr><td class=a14>
require “l(fā)ove.pl”;</td></tr></table><table align=center width=620><tr><td class=a14>
&love;</td></tr></table><table align=center width=620><tr><td class=a14>
exit;#可選</td></tr></table><table align=center width=620><tr><td class=a14>
}</td></tr></table><table align=center width=620><tr><td class=a14>
這樣是很好的。我們使用perlcc 標(biāo)準(zhǔn)編譯方法編譯它,然后用-b模式編譯display.pl和love.pl。然后把它們的名字改回.pl。</td></tr></table><table align=center width=620><tr><td class=a14>
注意在使用perlcc編譯程序的時(shí)候,編譯出來(lái)的程序必須帶有應(yīng)用程序擴(kuò)展文件,如dll和so。因?yàn)槟愕某绦蜻€需它們支持,這個(gè)文件在Perl的解析軟件目錄下,例如perl5.6就是perl56.dll,必須把它拷貝到執(zhí)行文件目錄地下。在Linux下是.so。你最好在一個(gè)沒有Perl 平臺(tái)解析器的環(huán)境下進(jìn)行測(cè)試,把那些需要使用的包也包括在里面。即使是VC等軟件編譯出來(lái)的程序,都需要在純環(huán)境下測(cè)試,這是必要的。這樣就可以測(cè)試出程序的一些不必要的問題。</td></tr></table><table align=center width=620><tr><td class=a14>
另外perlcc 的任何模式對(duì)語(yǔ)法都是很挑剔的,所以你最好使用比較正規(guī)的編寫方法,而且單個(gè)perl程序如果程序量太大,必須截取到另一個(gè)文件中,否則編譯后容易出現(xiàn)內(nèi)存溢出現(xiàn)象。</td></tr></table><table align=center width=620><tr><td class=a14>
大家要知道如果你的子程序使用了ByteCode編譯,但是他人仍然可以把你的子程序改成源代碼形式,這樣就好像我說(shuō)的會(huì)被套出很多量。最好的的方法,是采用ByteCode 編譯的程序?qū)懭胍粋€(gè)Auth認(rèn)證函數(shù)。當(dāng)然最保險(xiǎn)的方法是使用文件內(nèi)容驗(yàn)證,但是效率影響,我認(rèn)為不大必要。</td></tr></table><table align=center width=620><tr><td class=a14>
<table border="1" width="100%" height="85">
<tr>
<td width="100%" colspan="2" bgcolor="#C0C0C0" height="16"><span style="font-size:9.0pt;mso-bidi-font-size:12.0pt;
font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman";mso-bidi-font-family:"Times New Roman";mso-font-kerning:1.0pt;
mso-ansi-language:FR;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA">主程序:</span></td>
</tr>
<tr>
<td width="20%" height="16">
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">L.1<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">2<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">3<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">4<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">5<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">6<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">7<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">8<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">9<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">10<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">11<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">12<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">13<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">14<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">15<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">16<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR">17<o:p>
</o:p>
</span></p>
<span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:12.0pt;font-family:
"Times New Roman";mso-fareast-font-family:宋體;mso-font-kerning:1.0pt;mso-ansi-language:
FR;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA">18</span></td>
<td width="80%" height="16">
<p class="MsoNormal"><span lang="FR" style="font-size:9.0pt;mso-bidi-font-size:
12.0pt;mso-ansi-language:FR"># !perl<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="text-indent:18.0pt"><span lang="EN-US" style="font-size:9.0pt;mso-bidi-font-size:12.0pt">require
“cgi-lib”;<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="text-indent:18.0pt"><span lang="EN-US" style="font-size:9.0pt;mso-bidi-font-size:12.0pt">if
($in{‘a(chǎn)ction’} eq “”) {<o:p>
</o:p>
</span></p>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -