日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Perl基礎(chǔ) Perl包概念詳解

本文和大家重點(diǎn)討論一下Perl包的概念,Perl程序把變量和子程序的名稱(chēng)存貯到符號(hào)表中,perl的符號(hào)表中名字的集合就稱(chēng)為Perl包(package)。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了甘肅免費(fèi)建站歡迎大家使用!

 Perl包

Perl程序把變量和子程序的名稱(chēng)存貯到符號(hào)表中,perl的符號(hào)表中名字的集合就稱(chēng)為Perl包(package)。

1、Perl包的定義

在一個(gè)程序中可以定義多個(gè)Perl包,每個(gè)Perl包有一個(gè)單獨(dú)的符號(hào)表,定義語(yǔ)法為:
packagemypack;
此語(yǔ)句定義一個(gè)名為mypack的Perl包,從此以后定義的所有變量和子程序的名字都存貯在該P(yáng)erl包關(guān)聯(lián)的符號(hào)表中,直到遇到另一個(gè)package語(yǔ)句為止。
每個(gè)符號(hào)表有其自己的一組變量、子程序名,各組名字是不相關(guān)的,因此可以在不同的Perl包中使用相同的變量名,而代表的是不同的變量。如:

$var=14;
packagemypack;
$var=6;
***個(gè)語(yǔ)句創(chuàng)建變量$var并存貯在main符號(hào)表中,第三個(gè)語(yǔ)句創(chuàng)建另一個(gè)同名變量$var并存貯在mypackPerl包的符號(hào)表中。

2、在Perl包間切換

在程序里可以隨時(shí)在Perl包間來(lái)回切換,如:

 
 
 
  1. 1:#!/usr/local/bin/perl  
  2. 2:  
  3. 3:packagepack1;  
  4. 4:$var=26;  
  5. 5:packagepack2;  
  6. 6:$var=34;  
  7. 7:packagepack1;  
  8. 8:print("$var\n");  

運(yùn)行結(jié)果如下:

$program
26
$
第三行定義了Perl包pack1,第四行創(chuàng)建變量$var,存貯在Perl包pack1的符號(hào)表中,第五行定義新Perl包pack2,第六行創(chuàng)建另一個(gè)變量$var,存貯在Perl包pack2的符號(hào)表中。這樣就有兩個(gè)獨(dú)立的$var,分別存貯在不同的Perl包中。第七行又指定pack1為當(dāng)前Perl包,因?yàn)镻erl包pack1已經(jīng)定義,這樣,所有變量和子程序的定義和調(diào)用都為該P(yáng)erl包的符號(hào)表中存貯的名字。因此第八行對(duì)$var的調(diào)用為pack1Perl包中的$var,其值為26。

3、mainPerl包

存貯變量和子程序的名字的缺省符號(hào)表是與名為main的Perl包相關(guān)聯(lián)的。如果在程序里定義了其它的Perl包,當(dāng)你想切換回去使用缺省的符號(hào)表,可以重新指定mainPerl包:
packagemain;
這樣,接下來(lái)的程序就好象從沒(méi)定義過(guò)Perl包一樣,變量和子程序的名字象通常那樣存貯。

4、Perl包的引用

在一個(gè)Perl包中可以引用其它Perl包中的變量或子程序,方法是在變量名前面加上Perl包名和一個(gè)單引號(hào),如:

 
 
 
  1. packagemypack;  
  2. $var=26;  
  3. packagemain;  
  4. print("$mypack'var\n");  

這里,$mypack'var為mypackPerl包中的變量$var。
注意:在Perl5中,Perl包名和變量名用雙冒號(hào)隔開(kāi),即$mypack::var。單引號(hào)引用的方式仍然支持,但將來(lái)的版本中未必支持。

5、指定無(wú)當(dāng)前Perl包

在Perl5中,可以用如下語(yǔ)句指定無(wú)當(dāng)前Perl包:
package;
這時(shí),所有的變量必須明確指出所屬Perl包名,否則就無(wú)效--錯(cuò)誤。
$mypack::var=21;#ok
$var=21;#error-nocurrentpackage
這種情況直到用package語(yǔ)句指定當(dāng)前Perl包為止。

6、Perl包和子程序

Perl包的定義影響到程序中的所有語(yǔ)句,Perl包括子程序,如:

 
 
 
  1. packagemypack;  
  2. subroutinemysub{  
  3. local($myvar);  
  4. #stuffgoeshere  
  5. }  

這里,mysub和myvar都是Perl包mypack的一部分。在Perl包mypack外調(diào)用子程序mysub,則要指定Perl包:$mypack'mysub。
可以在子程序中切換Perl包:

 
 
 
  1. packagepack1;  
  2. subroutinemysub{  
  3. $var1=1;  
  4. packagepack2;  
  5. $var1=2;  
  6. }  

這段代碼創(chuàng)建了兩個(gè)變量$var1,一個(gè)在Perl包pack1中,一個(gè)在Perl包pack2中,Perl包中的局域變量只能在其定義的子程序等語(yǔ)句塊中使用,像普通的局域變量一樣。

7、用Perl包定義私有數(shù)據(jù)

Perl包最通常的用途是用在含有子程序和子程序所使用的全局變量的文件中,為子程序定義這樣的Perl包,可以保證子程序使用的全局變量不可在其它地方使用,這樣的數(shù)據(jù)即為私有數(shù)據(jù)。更進(jìn)一步,可以保證Perl包名不可在其它地方使用。

8、Perl包和系統(tǒng)變量

下列變量即使從其它Perl包中調(diào)用,也在mainPerl包中起作用:

文件變量STDIN,STDOUT,STDERR和ARGV
變量%ENV,%INC,@INC,$ARGV和@ARGV
其它含有特殊字符的系統(tǒng)變量

9、訪問(wèn)符號(hào)表

在程序中查找符號(hào)表可用數(shù)組%_package,此處package為想訪問(wèn)的符號(hào)表所屬的Perl包名。例如%_main含有缺省的符號(hào)表。
通常不需要親自查找符號(hào)表。

【編輯推薦】

  1. 學(xué)習(xí)筆記 Perl包概述
  2. Perl包概念解析 
  3. 解析四大Perl操作符用法
  4. Perl語(yǔ)言中Perl包和模塊詳盡解讀
  5. Perl標(biāo)量轉(zhuǎn)換函數(shù)用法指南

標(biāo)題名稱(chēng):Perl基礎(chǔ) Perl包概念詳解
分享路徑:http://www.5511xx.com/article/coddccs.html