📄 01_4_13_3.asp.html
字号:
<html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<TITLE>计算机世界网-Perl 语言全面编译(七)</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>编读往来</a><br><a href="javascript:AddBookMark('计算机世界网首页')"><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">技 术</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/prod.asp">产 品</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/app.asp">应 用</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/net.asp">网 络</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 语言全面编译(七)</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>第七节 联合编译以及实例</b></font></td></tr></table><table align=center width=620><tr><td class=a14>
本章至关重要,你已经知道Perl的两种最好的编译方法。但是他们都有利弊,只要稍动脑筋,就可以实现“强强联合”,这样可以尽量避免那些缺憾。</td></tr></table><table align=center width=620><tr><td class=a14>
联合编译的道理很简单,但操作起来也不那样一帆风顺,其中有很多地方值得注意。联合编译主要有一个主程序和多个子程序(FILE)组成。它们之间是使用require函数连接。主程序只做连接等分析工作,子程序做细节工作,包括对象操作,模块引用。我们采用PerlCC 翻译C的方式来编译主程序成为一个可以执行的文件,在把子程序用Bytecode方式编译,这样即可免去无法使用部分模块的问题,也可以直接使用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>
这样就可以了,把那些需要调入的模块,放在制定路径中就好了。而且在CGI或者Socket的网络编程和页面编程中,使用该模是有助于提高效率,降低资源占用率。如果使用整体编译方法,那么每次启动必然会耗费相当大的内存,同样这个程序要重复关闭启动,做Fast CGI也是相当不方便的,这也是Fast CGI在Perl中的最好的方法。根据不同的请求套入不同的子程序。</td></tr></table><table align=center width=620><tr><td class=a14>
首先我们使用 cgi-lib.pl得去POST和GET数据(这个时候有些人会问,为什么不使用cgi.pm,我不是不想用它,而是cgi.pm在perlcc的任何编译模式都会有问题)</td></tr></table><table align=center width=620><tr><td class=a14>
然后根据不同的请求,我在这里设置为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{‘action’} 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{‘action’ }eq “love”) {</td></tr></table><table align=center width=620><tr><td class=a14>
require “love.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 标准编译方法编译它,然后用-b模式编译display.pl和love.pl。然后把它们的名字改回.pl。</td></tr></table><table align=center width=620><tr><td class=a14>
注意在使用perlcc编译程序的时候,编译出来的程序必须带有应用程序扩展文件,如dll和so。因为你的程序还需它们支持,这个文件在Perl的解析软件目录下,例如perl5.6就是perl56.dll,必须把它拷贝到执行文件目录地下。在Linux下是.so。你最好在一个没有Perl 平台解析器的环境下进行测试,把那些需要使用的包也包括在里面。即使是VC等软件编译出来的程序,都需要在纯环境下测试,这是必要的。这样就可以测试出程序的一些不必要的问题。</td></tr></table><table align=center width=620><tr><td class=a14>
另外perlcc 的任何模式对语法都是很挑剔的,所以你最好使用比较正规的编写方法,而且单个perl程序如果程序量太大,必须截取到另一个文件中,否则编译后容易出现内存溢出现象。</td></tr></table><table align=center width=620><tr><td class=a14>
大家要知道如果你的子程序使用了ByteCode编译,但是他人仍然可以把你的子程序改成源代码形式,这样就好像我说的会被套出很多量。最好的的方法,是采用ByteCode 编译的程序写入一个Auth认证函数。当然最保险的方法是使用文件内容验证,但是效率影响,我认为不大必要。</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{‘action’} eq “”) {<o:p>
</o:p>
</span></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -