使用模块

摘要:
传统模块为调用者的输入和使用定义了子过程和变量。有些模块有上面两种类型的东西。Modules使用是记录在perldunc和perlmodHowtoExport如何导出:数组@EXPORT和@EXPORT_OK是一个模块持有符号表的列表,被导出到用户的名字空间,它们可以请求被导出,分别的。实际上可能得到私有的函数通过:my$subref=sub{...};$subref-˃;#Callitasafunction$obj-˃$subref;#Useitasamethod然而如果使用它们用于方法,让你明白如何使用继承工作作为一个规则,如果模块是尝试面向对象的那么什么也不会导出。
11.1 使用模块

模块有两种风格:传统的和面向对象的。传统模块为调用者的输入和使用定义了子过程和 变量。面向对象的模块的

运转类似类声明并且是通过方法调用来访问的,在第十二章, 对象,里描述。有些模块有上面两种类型的东西。

因此 如果你的模块的名字是 Red::Blue::Green,Perl 就会把它看作Red/Blue/Green.pm。


[root@wx03 test]# cat t1.pl 
unshift(@INC,"/root/test"); 
require Red::Blue;
use Exporter;
print $Red::Blue::var;
print "
";
print @INC;
print "
";
[root@wx03 test]# perl t1.pl 
31313
/root/test/usr/local/perl/lib/site_perl/5.22.1/x86_64-

linux/usr/local/perl/lib/site_perl/5.22.1/usr/local/perl/lib/5.22.1/x86_64-linux/usr/local/perl/lib/5.22.1.

Perl 将在 @INC 数组里面列出的每一个目录里面查找模块。



11.2.1 模块私有和输出器


Exporter - Implements default import method for modules  实现的默认的模块导入方法:

描述:

Exporter 模块实现一个导入方法 允许一个模块来导出函数和变量到用户的名字空间。

很多模块使用Exporter 相比实现它们自己的导入方法 因为Exporter 提供了一个高度灵活的接口,

实现优化的公用的情况。


Perl 会自动的import 方法 当处理一个use 语句 对于一个模块。 Modules使用是记录在perldunc和perlmod 

How to Export  如何导出:


数组  @EXPORT 和@EXPORT_OK 是一个模块 持有符号表的列表, 被导出到用户的名字空间,



它们可以请求被导出, 分别的。 符号表可以代表功能,标量,数组,hash和类型团。

符号表必须是给全名


@EXPORT    = qw(afunc $scalar @array);   # afunc is a function

@EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc


数组@EXPORT和@EXPORT_OK 在模块里持有符号表的列表,被导出到用户的名字.


如果你只导出函数名字 推荐省略&记号, 这样会更快

Selecting What to Export

不要导出方法名字:


Exports 污染 模块用户的名字空间, 如果你必须export 尝试使用@EXPORT_OK

有限于 @EXPORT 避免短下的或者相同的符号名字来降低名字冲突的风险


通常任何不被导出的仍旧可以方位从外部访问这个模块使用 YourModule::item_name

(或者 $blessed_ref->method) syntax.


通过转换 你可以使用一个前导下划线来非正式的表明 它们是内部的, 不是公用的。


实际上可能得到私有的函数通过:

  my $subref = sub { ... };
  $subref->(@args);            # Call it as a function
  $obj->$subref(@args);        # Use it as a method



然而 如果使用它们用于方法 , 让你明白如何使用继承工作


作为一个规则, 如果模块 是尝试面向对象的那么什么也不会导出。

它只是 函数的收集然后 @EXPORT_OK 任何但是使用@EXPORT 


对于函数和方法命名使用barewords 在优先的 前缀命名 

How to Import 如何导入:


在其他文件 你希望使用摩卡  这里有3种基本的方式 来加载模块和导入它的符号表:

use YourModule;

导入所有的符号表 在你的模块的@EXPORT 到你的名字空间

use YourModule ();

这个会导致perl加载你的模块但是不导入任何的符号表

use YourModule qw(...);


这个只会导入 列出的符号表到名字空间


所有列出的 符号表必须在你的@EXPORT or @EXPORT_OK

否则一个错误发生。























免责声明:文章转载自《使用模块》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring RedisTemplate操作-ZSet操作(6)Android自定义View研究(三) 获得Bitmap的三种方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WinDbg符号表设置的基础

  现在正在学windbg,记录一些基本的知识。 每次调试开始都会新开始一个workspace,其实就是跟工程差不多,记录了你这次调试的配置。当然有一个默认workspace,当你没有调试的时候。感觉最重要的就是设置符号表,每次都得弄好,要不然符号看不了的,设置如下.sympath srv*d:\symbols*http://msdl.microsoft....

Perl的open函数

引自 http://blog.csdn.net/stonesharp/article/details/6744634 一.文件操作1.打开文件用open函数可将文件句柄与某文件联系起来,提供访问文件的接口,即打开文件.语法为:open(FILEVAR, "filepath");filepath可以有如下三种模式:"filepath" 以只读模式打开文件."...

在CentOS上安装GitLab-CI以及运行Runner的方法步骤

使用如下命令进行下载资源包 [root@yuyoho ~]# curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash 接着,使用如下命令进行安装 [root@yuyoho ~]# yum...

3、perl进阶

1、条件判断与循环结构(if (unless)  while(until)   for   foreach   next last redo) if (unless)  关系运算符: 数字关系运算符(>,>=,<,<=,==,!=)    字符串关系运算符(gt,ge,lt,le,eq,ne) 数字中0是假,其余是真;字符中空字符串...

linux中常见的脚本工具

1、Perl Perl脚本最初为在Unix系统中更好的处理文本报表而设计,经过多年的发展已经成为一种广泛应用的高级脚本语言。Perl脚本对文本文件的处理功能依然非常强大,在图像处理、系统管理、网络编程、数据库编程等方面可有其用武之地。 2、Python Python是最近几年发展非常快的一种脚本编程语言,它的设计理念非常重视代码的可读性,其最显著的语法特点...

#!/usr/bin/env 脚本解释程序的作用

the Zimbu programming language http://www.zimbu.org/getting-started ------------------------------------------------------------------------------ #!/usr/bin/env在linux的一些bash的脚本,需...