微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perl package声明

 
perl的包(package)和模块(PM)说明(1)——包
 

注:此文章为转载(http://blog.sina.com.cn/s/blog_6151984a0100eoha.html)

perl的包(package)和模块(PM)

==================================包package===========================
     package mypack;  包文件的其始语句
此语句定义一个名为mypack的包,从此以后定义的所有变量和sub的名字都存贮在该包关联的符号表中,直到遇到另一个package语句为止。

    文件——包是面向对象的概念

#!/usr/bin/perl
package xxx;            package指令创建“类”;

sub ...                 创建sub就是创建“类”的“方法
sub ...
sub ...

1;    包文件结尾要retrun 1



   包(类)引用:

&mypack'printval();

在包mypack外调用包内sub

$mypack'line=10;
or
$mypack::line=10;

在包mypack外调用包内变量

perl5中建议$mypack::var
单引号引用的方式仍然支持,但将来的版本中未必支持


   
   perl文件缺省包——main包

#!/usr/bin/perl

$i=0;

sub gotest {

}  

 等价

#!/usr/bin/perl
package main;
$i=0;

sub gotest {

}


 
    如果在程序里package了其它的包,当你想切换回去使用缺省的符号表,可以重新指定package main;
    这样,接下来的程序就好象从没定义过包一样

    包文件和模块文件都是.pm

其中模块文件文件名必须与package 名相同


      在程序里可以随时在包间来回切换

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

$ ./tip.pl
26
$


    在Perl 5中,可以用package;    指定无当前包,这时,所有的变量必须明确指出所属包名,否则报错

package;   
$var = 21;

 #error - no current package

  改正

package; 
$mypack::var = 21;


   包造成的私有变量和方法:保证包的变量不可在其它地方使用,这样的数据即为私有数据

1 : package privpack;
2 : $valtoprint = 46;
3 :
4 : package main;
5 : # This function is the link to the outside world.
6 : sub printval {
7 :   &privpack'printval();  
8 : }
9 :
10: package privpack;
11: sub printval {
12:   print ("$valtoprint\n");   只有同一个包中,才能“直接”调用此变量,其他包中调用此变量要带::前缀或切换package ... 13: } 14: 15: package main; 16: 1; 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐