教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> 编程基地 >> CGI >> Perl教学(14)Perl5的包和模块之二 RSS订阅
Perl教学(14)Perl5的包和模块之二
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   
二、包
Perl程序把变量和子程序的名称存贮到符号表中,perl的符号表中名字的集合就称为包(package)。
1、包的定义
在一个程序中可以定义多个包,每个包有一个单独的符号表,定义语法为:
package mypack;
此语句定义一个名为mypack的包,从此以后定义的所有变量和子程序的名字都存贮在该包关联的符号表中,直到遇到另一个package语句为止。
每个符号表有其自己的一组变量、子程序名,各组名字是不相关的,因此可以在不同的包中使用相同的变量名,而代表的是不同的变量。如:

$var = 14;
package mypack;
$var = 6;
第一个语句创建变量$var并存贮在main符号表中,第三个语句创建另一个同名变量$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");
运行结果如下:

$ program
26
$
第三行定义了包pack1,第四行创建变量$var,存贮在包pack1的符号表中,第五行定义新包pack2,第六行创建另一个变量$var,存贮在包pack2的符号表中。这样就有两个独立的$var,分别存贮在不同的包中。第七行又指定pack1为当前包,因为包pack1已经定义,这样,所有变量和子程序的定义和调用都为该包的符号表中存贮的名字。因此第八行对$var的调用为pack1包中的$var,其值为26。
3、main包
存贮变量和子程序的名字的缺省符号表是与名为main的包相关联的。如果在程序里定义了其它的包,当你想切换回去使用缺省的符号表,可以重新指定main包:
package main;
这样,接下来的程序就好象从没定义过包一样,变量和子程序的名字象通常那样存贮。
4、包的引用
在一个包中可以引用其它包中的变量或子程序,方法是在变量名前面加上包名和一个单引号,如:

package mypack;
$var = 26;
package main;
print ("$mypack'var\n");
这里,$mypack'var为mypack包中的变量$var。
注意:在Perl 5中,包名和变量名用双冒号隔开,即$mypack::var。单引号引用的方式仍然支持,但将来的版本中未必支持。

来源:十度教育
作者:
关键字:Perl教学,Perl5,模块之二
发表日期:2005-4-15 14:16:40

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:Perl教学(14)Perl5的包和模块之三   下一篇:Perl教学(14)Perl5的包和模块之一


2009-1-8 6:42:32
本文的相类似文章
  • Perl教学(14)Perl5的包和模块之五
  • Perl教学(14)Perl5的包和模块之四
  • Perl教学(14)Perl5的包和模块之三
  • Perl教学(14)Perl5的包和模块之二
  • Perl教学(14)Perl5的包和模块之一
  • Perl教学(13)Perl的面向对象编程之六
  • Perl教学(13)Perl的面向对象编程之五
  • Perl教学(13)Perl的面向对象编程之四
  • Perl教学(13)Perl的面向对象编程之三
  • Perl教学(13)Perl的面向对象编程之二
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com