perl EXPORT模块
Exporter - Implements default import method for modules 实现模块的默认导出方法: 简介: [tomcat@wx03 ~]$ cat hui.pm
package hui;
require Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(munge $frobnicate); # symbols to export on request sub munge {
return 9999};
our $frobnicate="dad444ff";
1;
[tomcat@wx03 ~]$ cat a6.pl
use hui qw(munge $frobnicate);;
my $var=&munge ;
print $var."\n";
print $frobnicate."\n";
[tomcat@wx03 ~]$ perl a6.pl
9999
dad444ff 或者;
[tomcat@wx03 ~]$ cat cai.pm
package cai;
use Exporter 'import'; # gives you Exporter's import() method directly
@EXPORT_OK = qw(munge $frobnicate); # symbols to export on request
sub munge {
return 9999};
our $frobnicate="dad444ff";
1;
[tomcat@wx03 ~]$
[tomcat@wx03 ~]$ cat a6.pl
use cai qw(munge $frobnicate);;
my $var=&munge ;
print $var."\n";
print $frobnicate."\n";
[tomcat@wx03 ~]$ perl a6.pl
9999
dad444ff 在另外的文件 你希望使用你的模块: use YourModule qw(frobnicate); # import listed symbols frobnicate ($left, $right) # calls YourModule::frobnicate DESCRIPTION : Exporter 模块实现一个导入方法 允许一个模块导出函数和变量到用户的名字空间。 很多模块使用Exporter 而不是实现它们自己的导入方法 因为Exporter 提供了一个高度灵活的接口,一个实施优化的用于共同的情况下。 Perl 自动的调用导入当处理一个use语句用于一个模块。 模块和使用时记录在perlfunc和perlmod. How to Export 数组 @EXPORT and @EXPORT_OK 在一个模块里室友符号列表。 它们会被导出到用户的名字空间,或者它们可以请求被导出,分别的。 符号可以表示函数,引用,数组,hashes或者符号表。 符号必须给定全名。 @EXPORT = qw(afunc $scalar @array); # afunc is a function @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc 如果你只要导出函数名字 ,推荐省略&符号, 这种方式速度更快。 Selecting What to Export 不要导出方法名字 默认没有一个很多的理由不导出任何东西 Exports 污染模块使用者的名字空间,如果你必须导出尝试使用@EXPORT_OK 优先于@EXPORT,避免短的或者相同的符号名字来降低名字冲突的风险。 通常没有导出任何但是仍旧可以访问从模块外部使用 YourModule::item_name 或者 对象方法 $blessed_ref->method 它实际上市可以的,以获取私有函数;
my $subref = sub { ... };
$subref->(@args); # Call it as a function
$obj->$subref(@args); # Use it as a method 然而,如果你使用它们用于方法,这取决于你如何继承使用 作为一个一般规则, 如果模块尝试是面向对象的那么什么也不会导出。 如果只是一个函数集,那么 @EXPORT_OK 任何但是use @EXPORT How to Import 如何导入: 在另外的文件你希望使用你的模块,这里有3种方式来加载你的模块和导入符号表: use YourModule; 这个导入所有的符号从YourModule's @EXPORT到你的名字空间 use YourModule (); 这个导致perl 加载你的模块但是不导入任何符号表 use YourModule qw(...); 这个导入只是符号表列出在qw里的 到你的名字空间, 所有的列出的符号表必须在你的@EXPORT or @EXPORT_OK 否则错误发生。 除非你想要使用它的高级特性,这可能是你需要知道的 use Exporter 高级功能: 指定导入列表: 如果任何在导入的列表里的条目以!,:或者/开始 那么列表被处理为一系列的规范 可以增加或者删除从导入列表里,它们从左到右处理 [!]name This name only
[!]:DEFAULT All names in @EXPORT
[!]:tag All names in $EXPORT_TAGS{tag} anonymous array
[!]/pattern/ All names in @EXPORT and @EXPORT_OK which match 一个leading ! 表示匹配的名字应该被删除从导入的列表里. 如果第一个指定的是一个删除被看作通过 e.g., Module.pm defines: 模块定义: @EXPORT = qw(A1 A2 A3 A4 A5);
@EXPORT_OK = qw(B1 B2 B3 B4 B5);
%EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]); 现在你不能使用tags 在@EXPORT or @EXPORT_OK.
perl EXPORT模块的更多相关文章
- Perl 多线程模块 Parallel::ForkManager
Perl 多线程模块 Parallel::ForkManager 一个简单的并行处理模块.这个是用来对付循环的多线程处理. 放在循环前面. Table of Contents 1 Synops内容简介 ...
- perl json模块
JSON - JSON (JavaScript Object Notation) encoder/decoder 简介: use JSON; # imports encode_json, decode ...
- Perl使用模块和@INC
use加载模块 安装模块后,都会有对应的文档,可以通过perldoc MODULE_NAME来获取模块的使用帮助. 例如:获取File::Utils的使用帮助. perldoc File::Utils ...
- 6、perl创建模块(Exporter)及路径 引用 嵌套 查询模块
参考博客:http://www.cnblogs.com/xudongliang/tag/perl/ 1.perl 模块的创建以及制定perl 模块的路径 (1)创建一个Myfun.pm模块. #/us ...
- 查看perl及其模块
Perl本身自带了很丰富的文档,如果把它们都打印出来,恐怕要耗费大量纸墨.我们试图清点过,但数到2000页左右的时候就数不清了(不用担心,我们用虚拟打印机计算页面数量,这样不会对树木造成威胁,挺环保的 ...
- 和TransDecoder 学习perl 自定义模块的路径问题
TransDecoder 软件是用perl 原因写的,其中包含了一些自定义的模块,通过一个脚本来进行调用,为了能够正常访问自定义的perl 模块, 在其源代码中利用了FindBin 这个模块 use ...
- 使用cpanm安装perl相关模块
cpanm是安装Perl模块的最方便的方法.自动下载安装依赖包.使用CPAN shell或下载源码包安装模块,遇到大量依赖关系,非常头痛.下面就是一例: 1. 安装cpanmcpanm其实是一个可执行 ...
- [转] ES6 import/export:模块导入导出方式
export导出语法 // default exports export default 42; export default {}; export default []; export defaul ...
- windows 下安装perl Tk 模块
首先,安装activeperl ,安装过程中勾选自动添加PATH环境变量,这样安装后就不需要自己手动修改PATH环境变量: 通过cmd 调出命令行窗口,输入ppm ,然后回车,就开启了perl 的包管 ...
随机推荐
- String详解说明
大家平时都string都不是很在意,但是每当面试碰到String的时候在“==”和equals之间就乱了,下面我来说一说String,也许不够全面,请大家多多指教,希望会帮到处于蒙圈状态的人们. 一. ...
- golang channel初次接触
goroutine之间的同步 goroutine是golang中在语言级别实现的轻量级线程,仅仅利用go就能立刻起一个新线程.多线程会引入线程之间的同步问题,经典的同步问题如生产者-消费者问题,在c, ...
- java笔记之数据类型
java中一句连续的字符不能分开在两行中书写,如国太长可用“+”将这两个字符串连起来 文档注释是以“/**”开头,并在注释内容末尾以“*/”结束. 文档注释是对代码的解释说明,可以使用javadoc命 ...
- POJ 3384 Feng Shui 凸包直径 + 半平面交
G++一直没有过了 换成 C++果断A掉了...It's time to bet RP. 题意:给一个多边形,然后放进去两个圆,让两个圆的覆盖面积尽量最大,输出两个圆心的坐标. 思路:将多边形的边向里 ...
- Ural 1319 - Hotel
You programmers are lucky! You don't have to deal with these terrible people – designers… This st ...
- Python函数式编程:Lambda表达式
首先我们要明白在编程语言中,表达式和语句的区别. 表达式是一个由变量.常量.有返回值的函数加运算符组成的一个式子,该式子是有返回值的 ,如 a + 1 就是个表达式, 单独的一个常量.变量 或函数调 ...
- hdu 2757 Ocean Currents(优先队列+bfs)
小伙伴们真心被这道题惊呆了!刚开始是读题,题目都把小伙伴惊呆了,题目都读不懂! 在前面猴子小伙伴的帮助下,理解了一点点,又偷偷的在纸上写写画画,明白了题意! 后来,你懂的,果断拿下!在拿下的过程也经过 ...
- hdu 1026 Ignatius and the Princess I【优先队列+BFS】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1026 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- 获取java byte的无符号数值
byte a = (byte)234; System.out.println(a); 上面的代码,结果是-22,因为java中byte是有符号的,byte范围是-128~127. 如果想输出234,该 ...
- Coursera Machine Learning 学习笔记(十二)
- Normal equation 到眼下为止,线性回归问题中都在使用梯度下降算法,但对于某些线性回归问题,正规方程方法是更好的解决方式. 正规方程就是通过求解例如以下方程来解析的找出使得代价函数最小 ...