亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? perl14.htm

?? PERL5中文教程
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<title>Perl教程之包和模塊</title>
<LINK rel="stylesheet" href="article.css" type="text/css">
</head>
<body>
<br>
<p align="center">第十四章 Perl5的包和模塊</p>

<p align="center"><a target="_blank" href="http://flamephoenix.126.com">by flamephoenix</a></p>

<a href="#1">一、require函數(shù)</a><br>
 &nbsp; <a href="#1.1">1、require函數(shù)和子程序庫</a><br>
 &nbsp; <a href="#1.2">2、用require指定Perl版本</a><br>
<a href="#2">二、包</a><br>
 &nbsp; <a href="#2.1">1、包的定義</a><br>
 &nbsp; <a href="#2.2">2、在包間切換</a><br>
 &nbsp; <a href="#2.3">3、main包</a><br>
 &nbsp; <a href="#2.4">4、包的引用</a><br>
 &nbsp; <a href="#2.5">5、指定無當(dāng)前包</a><br>
 &nbsp; <a href="#2.6">6、包和子程序</a><br>
 &nbsp; <a href="#2.7">7、用包定義私有數(shù)據(jù)</a><br>
 &nbsp; <a href="#2.8">8、包和系統(tǒng)變量</a><br>
 &nbsp; <a href="#2.9">9、訪問符號表</a><br>
<a href="#3">三、模塊</a><br>
 &nbsp; <a href="#3.1">1、創(chuàng)建模塊</a><br>
 &nbsp; <a href="#3.2">2、導(dǎo)入模塊</a><br>
 &nbsp; <a href="#3.3">3、預(yù)定義模塊</a><br>

<br>
<a name="1">一、require函數(shù)</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;用require函數(shù)可以把程序分割成多個(gè)文件并創(chuàng)建函數(shù)庫。例如,在myfile.pl中有定義好的Perl函數(shù),可用語句require ("myfile.pl"); 在程序中包含進(jìn)來。當(dāng)Perl解釋器看到這一語句,就在內(nèi)置數(shù)組變量@INC指定的目錄中尋找文件myfile.pl。如果找到了,該文件中的語句就被執(zhí)行,否則程序終止并輸出錯(cuò)誤信息:<br>
&nbsp;&nbsp;&nbsp;&nbsp;Can't find myfile.pl in @INC<br>
&nbsp;&nbsp;&nbsp;&nbsp;作為子程序調(diào)用參數(shù),文件中最后一個(gè)表達(dá)式的值成為返回值,require函數(shù)查看其是否為零,若為零則終止。例如myfile.pl最后的語句是:<br>
&nbsp;&nbsp;&nbsp;&nbsp;print ("hello, world!\n");<br>
&nbsp;&nbsp;&nbsp;&nbsp;$var = 0;<br>
&nbsp;&nbsp;&nbsp;&nbsp;因?yàn)樽詈蟮恼Z句值為零,Perl解釋器輸出下列錯(cuò)誤信息并推出:<br>
&nbsp;&nbsp;&nbsp;&nbsp;myfile.pl did not reture true value<br>
&nbsp;&nbsp;&nbsp;&nbsp;可以用簡單變量或數(shù)組元素等向require傳遞參數(shù),如:<br>
<blockquote>
@reqlist = ("file1.pl", "file2.pl", "file3.pl");<br>
require ($reqlist[$0]);<br>
require ($reqlist[$1]);<br>
require ($reqlist[$2]);
</blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;還可以不指定文件名,即:<br>
&nbsp;&nbsp;&nbsp;&nbsp;require;<br>
&nbsp;&nbsp;&nbsp;&nbsp;這時(shí),變量$_的值即作為文件名傳遞給require。<br>
&nbsp;&nbsp;&nbsp;&nbsp;注:如果@INC中有多個(gè)目錄中含有同一個(gè)文件,則只有第一個(gè)被包含。<br>
<a name="1.1">1、require函數(shù)和子程序庫</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;用require函數(shù)可以創(chuàng)建可用于所有Perl程序的子程序庫,步驟如下:<br>
<blockquote>
a、確定存貯子程序庫的目錄<br>
b、將子程序抽取放到單獨(dú)的文件中,將文件放到子程序庫目錄<br>
c、每個(gè)文件末尾加一句非零值的語句,最簡單的辦法是語句  1;<br>
d、在主程序中用require包含一個(gè)或多個(gè)所需的文件。<br>
e、運(yùn)行主程序時(shí),用 -I 選項(xiàng)指定子程序庫目錄,或者在調(diào)用require前將該目錄添加到@INC數(shù)組中。
</blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;例如:假設(shè)目錄/u/perldir中存有你的Perl子程序庫,子程序mysub存貯在文件mysub.pl中。現(xiàn)在來包含上該文件:<br>
&nbsp;&nbsp;&nbsp;&nbsp;unshift (@INC, "/u/perldir");<br>
&nbsp;&nbsp;&nbsp;&nbsp;require ("mysub.pl");<br>
&nbsp;&nbsp;&nbsp;&nbsp;對unshift的調(diào)用把目錄/u/perldir添加到@INC數(shù)組,對require的調(diào)用將mysub.pl文件的內(nèi)容包含進(jìn)來作為程序的一部分。<br>
注意:<br>
<blockquote>
1、應(yīng)該使用unshift來向@INC中添加目錄,而不是push。因?yàn)閜ush增加到@INC的末尾,則該目錄將被最后搜尋。<br>
2、如果你的庫文件名與/usr/local/lib/perl中的某文件同名,則不會(huì)被包含進(jìn)來,因?yàn)閞equire只包含同名文件中的第一個(gè)。
</blockquote>
<a name="1.2">2、用require指定Perl版本</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;Perl 5中,可以用require語句來指定程序運(yùn)行所需的Perl版本。當(dāng)Perl解釋器看到require后跟著數(shù)字時(shí),則只有其版本高于或等于該數(shù)字時(shí)才運(yùn)行該程序。例如,下面語句表明只有Perl解釋器為5.001版或更高時(shí)才運(yùn)行該程序:<br>
&nbsp;&nbsp;&nbsp;&nbsp;require 5.001;<br>
<a name="2">二、包</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;Perl程序把變量和子程序的名稱存貯到符號表中,perl的符號表中名字的集合就稱為包(package)。<br>
<a name="2.1">1、包的定義</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;在一個(gè)程序中可以定義多個(gè)包,每個(gè)包有一個(gè)單獨(dú)的符號表,定義語法為:<br>
&nbsp;&nbsp;&nbsp;&nbsp;package mypack;<br>
&nbsp;&nbsp;&nbsp;&nbsp;此語句定義一個(gè)名為mypack的包,從此以后定義的所有變量和子程序的名字都存貯在該包關(guān)聯(lián)的符號表中,直到遇到另一個(gè)package語句為止。<br>
&nbsp;&nbsp;&nbsp;&nbsp;每個(gè)符號表有其自己的一組變量、子程序名,各組名字是不相關(guān)的,因此可以在不同的包中使用相同的變量名,而代表的是不同的變量。如:<br>
<blockquote>
$var = 14;<br>
package mypack;<br>
$var = 6;
</blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;第一個(gè)語句創(chuàng)建變量$var并存貯在main符號表中,第三個(gè)語句創(chuàng)建另一個(gè)同名變量$var并存貯在mypack包的符號表中。<br>
<a name="2.2">2、在包間切換</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;在程序里可以隨時(shí)在包間來回切換,如:<br>
<blockquote>
1:  #!/usr/local/bin/perl<br>
2:  <br>
3:  package pack1;<br>
4:  $var = 26;<br>
5:  package pack2;<br>
6:  $var = 34;<br>
7:  package pack1;<br>
8:  print ("$var\n");
</blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;運(yùn)行結(jié)果如下:<br>
<blockquote>
$ program<br>
26<br>
$
</blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;第三行定義了包pack1,第四行創(chuàng)建變量$var,存貯在包pack1的符號表中,第五行定義新包pack2,第六行創(chuàng)建另一個(gè)變量$var,存貯在包pack2的符號表中。這樣就有兩個(gè)獨(dú)立的$var,分別存貯在不同的包中。第七行又指定pack1為當(dāng)前包,因?yàn)榘黳ack1已經(jīng)定義,這樣,所有變量和子程序的定義和調(diào)用都為該包的符號表中存貯的名字。因此第八行對$var的調(diào)用為pack1包中的$var,其值為26。<br>
<a name="2.3">3、main包</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;存貯變量和子程序的名字的缺省符號表是與名為main的包相關(guān)聯(lián)的。如果在程序里定義了其它的包,當(dāng)你想切換回去使用缺省的符號表,可以重新指定main包:<br>
&nbsp;&nbsp;&nbsp;&nbsp;package main;<br>
&nbsp;&nbsp;&nbsp;&nbsp;這樣,接下來的程序就好象從沒定義過包一樣,變量和子程序的名字象通常那樣存貯。<br>
<a name="2.4">4、包的引用</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;在一個(gè)包中可以引用其它包中的變量或子程序,方法是在變量名前面加上包名和一個(gè)單引號,如:<br>
<blockquote>
package mypack;<br>
$var = 26;<br>
package main;<br>
print ("$mypack'var\n");
</blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;這里,$mypack'var為mypack包中的變量$var。<br>
&nbsp;&nbsp;&nbsp;&nbsp;注意:在Perl 5中,包名和變量名用雙冒號隔開,即$mypack::var。單引號引用的方式仍然支持,但將來的版本中未必支持。<br>
<a name="2.5">5、指定無當(dāng)前包</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;在Perl 5中,可以用如下語句指定無當(dāng)前包:<br>
&nbsp;&nbsp;&nbsp;&nbsp; package;<br>
&nbsp;&nbsp;&nbsp;&nbsp;這時(shí),所有的變量必須明確指出所屬包名,否則就無效--錯(cuò)誤。<br>
&nbsp;&nbsp;&nbsp;&nbsp; $mypack::var = 21; #ok<br>
&nbsp;&nbsp;&nbsp;&nbsp; $var = 21; &nbsp; #error - no current package<br>
&nbsp;&nbsp;&nbsp;&nbsp;這種情況直到用package語句指定當(dāng)前包為止。<br>
<a name="2.6">6、包和子程序</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;包的定義影響到程序中的所有語句,包括子程序,如:<br>
<blockquote>
package mypack;<br>
subroutine mysub {<br>
 &nbsp;  local ($myvar);<br>
 &nbsp; # stuff goes here<br>
}
</blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;這里,mysub和myvar都是包mypack的一部分。在包mypack外調(diào)用子程序mysub,則要指定包:$mypack'mysub。<br>
&nbsp;&nbsp;&nbsp;&nbsp;可以在子程序中切換包:<br>
<blockquote>
package pack1;<br>
subroutine mysub {<br>
 &nbsp;  $var1 = 1;<br>
 &nbsp;  package pack2;<br>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看91精品国产麻豆| 91丝袜呻吟高潮美腿白嫩在线观看| 国产欧美一区二区精品性色| 在线观看日韩国产| 国产福利一区二区三区在线视频| 亚洲国产综合视频在线观看| 国产欧美一区二区精品久导航 | 一区二区三区国产豹纹内裤在线| 欧美一级免费大片| 91久久线看在观草草青青| 国产综合久久久久影院| 亚洲高清在线精品| 亚洲欧美日韩在线不卡| 久久久不卡影院| 欧美日本一区二区在线观看| 97se亚洲国产综合在线| 国产精品18久久久久久久久 | 国产成人免费网站| 天天综合网天天综合色| 亚洲精品国产第一综合99久久| 国产精品丝袜一区| 91激情在线视频| 不卡的电影网站| 国产一区二区三区av电影| 秋霞成人午夜伦在线观看| 夜夜精品浪潮av一区二区三区| 国产精品情趣视频| 国产日韩精品一区二区浪潮av| 精品国产一区二区国模嫣然| 欧美一级理论片| 日韩一二三区不卡| 欧美一个色资源| 8x8x8国产精品| 69久久99精品久久久久婷婷 | 在线播放亚洲一区| 欧美日韩一区在线| 欧美色图片你懂的| 精品国产91久久久久久久妲己| 日本中文一区二区三区| 午夜精品123| 日本中文字幕一区二区视频| 亚洲第一狼人社区| 亚洲国产精品久久艾草纯爱| 亚洲欧洲日产国码二区| 国产日韩欧美亚洲| 国产精品视频观看| 国产精品久久福利| **性色生活片久久毛片| 亚洲欧洲色图综合| 亚洲影院在线观看| 日韩在线卡一卡二| 精品在线免费观看| 国产成人福利片| 91亚洲资源网| 欧美日韩电影在线| 欧美大尺度电影在线| 久久精品男人天堂av| 国产精品久久久久久久蜜臀 | 日本高清视频一区二区| 欧美视频在线不卡| 日韩一区二区三区在线观看 | 午夜不卡av在线| 日本午夜一本久久久综合| 狠狠色丁香婷婷综合| 国产aⅴ综合色| 色婷婷综合久久久久中文一区二区| 欧美日韩国产成人在线免费| 欧美一级高清片| 中文av一区特黄| 亚洲一卡二卡三卡四卡| 精品一区中文字幕| 99久久精品99国产精品| 69堂亚洲精品首页| 国产精品欧美精品| 五月综合激情日本mⅴ| 极品少妇xxxx偷拍精品少妇| 不卡高清视频专区| 欧美日韩精品三区| 中文字幕免费在线观看视频一区| 亚洲九九爱视频| 经典三级视频一区| 色噜噜夜夜夜综合网| 日韩欧美在线123| 亚洲视频免费在线| 麻豆免费精品视频| 94色蜜桃网一区二区三区| 日韩一区二区三区电影 | 亚洲黄色小说网站| 精品一区二区三区免费视频| 91网站黄www| 欧美成人一区二区三区在线观看| 亚洲欧美国产高清| 国产一区二区三区精品欧美日韩一区二区三区 | 偷窥少妇高潮呻吟av久久免费| 国产精品主播直播| 欧美精品乱码久久久久久按摩| 国产日韩欧美综合在线| 日精品一区二区| 91一区二区三区在线观看| 久久午夜老司机| 日韩电影免费在线看| 91免费观看视频在线| 久久久综合网站| 免费一级片91| 在线精品视频免费观看| 国产精品剧情在线亚洲| 国产美女娇喘av呻吟久久| 91精品午夜视频| 亚洲激情图片一区| 粉嫩av一区二区三区在线播放| 日韩亚洲欧美在线| 亚洲午夜精品在线| 99视频有精品| 久久精品一区二区三区四区| 蜜桃视频在线观看一区| 精品1区2区3区| 亚洲制服丝袜在线| 91蜜桃免费观看视频| 国产日韩一级二级三级| 国产综合色视频| 久久亚区不卡日本| 麻豆成人91精品二区三区| 91精品国产综合久久福利| 亚洲成人动漫一区| 欧美中文字幕久久| 亚洲线精品一区二区三区八戒| 91丨九色丨尤物| 亚洲女人的天堂| 91成人在线观看喷潮| 亚洲欧美欧美一区二区三区| a在线欧美一区| 国产精品美女久久久久久久| 国产成人综合亚洲网站| 欧美激情在线一区二区| 成人污视频在线观看| 国产精品久久看| 91在线无精精品入口| 国产精品久久福利| 色哟哟一区二区| 一区二区三区欧美久久| 欧美午夜精品一区二区三区| 亚洲第一精品在线| 制服丝袜在线91| 免费看日韩精品| 精品福利一二区| 国产不卡视频一区| 国产精品国产自产拍高清av王其| voyeur盗摄精品| 亚洲黄色av一区| 欧美三级日韩在线| 日本大胆欧美人术艺术动态| 日韩精品中文字幕一区二区三区| 激情深爱一区二区| 国产日韩亚洲欧美综合| 91麻豆福利精品推荐| 亚洲成人免费av| 欧美成人三级电影在线| 国产精品综合二区| 1000精品久久久久久久久| 欧美性高清videossexo| 毛片av一区二区| 国产精品女主播av| 欧美日韩日日骚| 国产一区免费电影| 日韩美女精品在线| 在线不卡a资源高清| 国产成人福利片| 亚洲成人在线免费| 国产欧美一区视频| 欧美三片在线视频观看| 国产一区日韩二区欧美三区| 日韩一区在线播放| 日韩三级高清在线| 成人av影视在线观看| 日韩高清不卡一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 波多野结衣中文字幕一区二区三区| 亚洲一区二区三区四区在线观看| 日韩欧美色电影| 91首页免费视频| 蜜桃视频在线观看一区| 亚洲人成精品久久久久久| 亚洲精品一区二区三区香蕉| 色综合久久久久久久久久久| 久久99精品国产.久久久久| 亚洲男同性恋视频| 26uuu另类欧美亚洲曰本| 欧美三级三级三级爽爽爽| 国产成人8x视频一区二区 | 一区二区三区**美女毛片| 欧美大肚乱孕交hd孕妇| 在线观看国产一区二区| 国产精品996| 秋霞电影网一区二区| 亚洲女同一区二区| 国产亚洲精品久| 日韩欧美国产小视频| 欧美日韩中文字幕一区| av中文一区二区三区| 久久成人麻豆午夜电影|