成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

學習筆記 Perl包概述

開發 架構
Perl語言有很多值得學習的地方,你對Perl包的概念是否熟悉,這里和大家簡單分享一下,希望本文的介紹能讓你有所收獲。

 

本文和大家重點討論一下PerlPerl包的概念,Perl程序把變量和子程序的名稱存貯到符號表中,perl的符號表中名字的集合就稱為Perl包(package)。具體內容請看本文詳細介紹。

 

 Perl包

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

1、Perl包的定義

在一個程序中可以定義多個Perl包,每個Perl包有一個單獨的符號表,定義語法為:
packagemypack;
此語句定義一個名為mypack的Perl包,從此以后定義的所有變量和子程序的名字都存貯在該Perl包關聯的符號表中,直到遇到另一個package語句為止。
每個符號表有其自己的一組變量、子程序名,各組名字是不相關的,因此可以在不同的Perl包中使用相同的變量名,而代表的是不同的變量。如:

$var=14;
packagemypack;
$var=6;
***個語句創建變量$var并存貯在main符號表中,第三個語句創建另一個同名變量$var并存貯在mypackPerl包的符號表中。

2、在Perl包間切換

在程序里可以隨時在Perl包間來回切換,如:

  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");  

運行結果如下:

$program
26
$
第三行定義了Perl包pack1,第四行創建變量$var,存貯在Perl包pack1的符號表中,第五行定義新Perl包pack2,第六行創建另一個變量$var,存貯在Perl包pack2的符號表中。這樣就有兩個獨立的$var,分別存貯在不同的Perl包中。第七行又指定pack1為當前Perl包,因為Perl包pack1已經定義,這樣,所有變量和子程序的定義和調用都為該Perl包的符號表中存貯的名字。因此第八行對$var的調用為pack1Perl包中的$var,其值為26。

3、main包

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

4、Perl包的引用

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

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

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

5、指定無當前Perl包

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

6、Perl包和子程序

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

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

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

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

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

7、用Perl包定義私有數據

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

  1. 1:packageprivpack;  
  2. 2:$valtoprint=46;  
  3. 3:  
  4. 4:packagemain;  
  5. 5:#Thisfunctionisthelinktotheoutsideworld.  
  6. 6:subprintval{  
  7. 7:&privpack'printval();  
  8. 8:}  
  9. 9:  
  10. 10:packageprivpack;  
  11. 11:subprintval{  
  12. 12:print("$valtoprint\n");  
  13. 13:}  
  14. 14:  
  15. 15:packagemain;  
  16. 16:1;#returnvalueforrequire  

此子程序只有在調用printval后才能產生輸出。
該文件分為兩個部分:與外界聯系的部分和私有部分。前者為缺省的mainPerl包,后者為Perl包privpack。第6~8行定義的子程序printval可被其它程序或子程序調用。printval輸出變量$valtoprint的值,此變量僅在Perl包privpack中定義和使用。第15、16行確保其被其它程序用require語句Perl包含后工作正常,15行將當前Perl包設置回缺省Perl包main,16行返回非零值使require不報錯。

8、Perl包和系統變量

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

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

9、訪問符號表

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

【編輯推薦】

  1. 淺析Perl面向對象編程用法
  2. 詳解Perl引用/指針用法
  3. 實例解析Perl守護進程用法
  4. Perl模式匹配經驗總結
  5. 解析Perl面向對象編程的兩種實現方式

 

責任編輯:佚名 來源: csdn.net
相關推薦

2010-07-16 12:50:45

Perl語言

2010-07-13 15:43:57

Perl語言

2010-07-19 09:08:38

Perl模塊

2010-07-21 14:18:27

Perl函數

2010-07-21 13:27:06

Perl模式匹配

2010-07-13 12:50:47

Perl變量

2010-07-21 14:08:28

Perl命令行

2010-07-13 13:15:17

Perl

2010-07-15 18:04:20

Perl模式

2010-07-20 15:18:41

Perl基本語法

2010-07-26 10:51:26

Perl模式匹配

2010-07-15 10:07:29

Perl指令

2010-07-21 09:50:51

Perl調試

2010-07-13 16:34:34

Perl 哈希表

2010-07-15 11:29:25

Perl格式化輸出

2010-07-20 10:58:39

Perl腳本

2010-07-14 17:11:57

Perl文件

2010-07-19 11:07:13

Perl控制結構

2010-07-19 16:47:54

Perl

2010-07-20 13:44:02

Perl方法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美 日韩 亚洲91麻豆精品 | 黄色国产在线视频 | 九九在线精品视频 | 亚洲码欧美码一区二区三区 | 91社区视频 | 欧美日日 | 韩国精品在线观看 | 欧美日韩福利视频 | 亚洲狠狠丁香婷婷综合久久久 | 精品国产视频 | 亚洲精品乱码久久久久久9色 | 国产精品久久久久久久久久不蜜臀 | 免费国产视频 | 高清黄色网址 | 国产精品网址 | 毛片网站在线观看 | 91n成人| 青青草原综合久久大伊人精品 | 国产欧美日韩精品一区二区三区 | 日本在线网站 | 99免费精品 | 波多野结衣在线观看一区二区三区 | 精品国产视频 | 亚洲小视频在线观看 | 美女一区| 久久亚洲国产 | 中文字幕av色 | a久久久久久 | 孰女乱色一区二区三区 | 久久久久久国产 | 欧美一区二区三区免费在线观看 | 中文字幕免费视频 | 国产精品亚洲精品日韩已方 | www日| 亚洲欧美中文日韩在线v日本 | 天堂一区二区三区 | 久久高清 | 能免费看的av | 国产成人久久精品 | 在线观看免费av网 | 国产一级片免费看 |