明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Perl教學(xué)(14)Perl5的包與模塊之二

[摘要]二、包Perl程序把變量和子程序的名稱存貯到符號表中,perl的符號表中名字的集合就稱為包(package)。1、包的定義在一個程序中可以定義多個包,每個包有一個單獨的符號表,定義語法為:package mypack;此語句定義一個名為mypack的包,從此以后定義的所有變量和子程序的名字都存貯在...
二、包
Perl程序把變量和子程序的名稱存貯到符號表中,perl的符號表中名字的集合就稱為包(package)。
1、包的定義
在一個程序中可以定義多個包,每個包有一個單獨的符號表,定義語法為:
package mypack;
此語句定義一個名為mypack的包,從此以后定義的所有變量和子程序的名字都存貯在該包關(guān)聯(lián)的符號表中,直到遇到另一個package語句為止。
每個符號表有其自己的一組變量、子程序名,各組名字是不相關(guān)的,因此可以在不同的包中使用相同的變量名,而代表的是不同的變量。如:

$var = 14;
package mypack;
$var = 6;
第一個語句創(chuàng)建變量$var并存貯在main符號表中,第三個語句創(chuàng)建另一個同名變量$var并存貯在mypack包的符號表中。
2、在包間切換
在程序里可以隨時在包間來回切換,如:

1: #!/usr/local/bin/perl
2:
3: package pack1;
4: $var = 26;
5: package pack2;
6: $var = 34;
7: package pack1;
8: print ("$var\n");
運行結(jié)果如下:

$ program
26
$
第三行定義了包pack1,第四行創(chuàng)建變量$var,存貯在包pack1的符號表中,第五行定義新包pack2,第六行創(chuàng)建另一個變量$var,存貯在包pack2的符號表中。這樣就有兩個獨立的$var,分別存貯在不同的包中。第七行又指定pack1為當(dāng)前包,因為包pack1已經(jīng)定義,這樣,所有變量和子程序的定義和調(diào)用都為該包的符號表中存貯的名字。因此第八行對$var的調(diào)用為pack1包中的$var,其值為26。
3、main包
存貯變量和子程序的名字的缺省符號表是與名為main的包相關(guān)聯(lián)的。如果在程序里定義了其它的包,當(dāng)你想切換回去使用缺省的符號表,可以重新指定main包:
package main;
這樣,接下來的程序就好象從沒定義過包一樣,變量和子程序的名字象通常那樣存貯。
4、包的引用
在一個包中可以引用其它包中的變量或子程序,方法是在變量名前面加上包名和一個單引號,如:

package mypack;
$var = 26;
package main;
print ("$mypack'var\n");
這里,$mypack'var為mypack包中的變量$var。
注意:在Perl 5中,包名和變量名用雙冒號隔開,即$mypack::var。單引號引用的方式仍然支持,但將來的版本中未必支持。