@EXPORT

Perl通过继承,可以使子类可以像使用本地方法一样使用其基类的方法。

一个类如果想把自己的方法(变量)暴露给别人使用(比如一些公共基础类的的通用方法或变量),还可将直接将方法(变量)添加到内置数组@EXPORT中即可。示例如下:

[xywang@mnsdev13:~/]$ cat Fred.pm
package Fred;
use Exporter 'import';
@EXPORT = qw(flintstone $var);
sub flintstone{ return 99;
};
our $var="SADA1311";
1; [xywang@mnsdev13:~/]$ cat test.pl
#!/usr/local/bin/perl5
use Fred ;
print $var;
print "\n"; print flintstone; [xywang@mnsdev13:~/]$ ./test.pl
SADA1311
99

注意除了将方法和变量加入到@EXPORT中以外,还需要在最开始的时候use Exporter来支持:

use Exporter 'import';

  或者

use base qw(Exporter);

@EXPORT_OK

Perl中还有个@EXPORT_OK.

@EXPORT和 @EXPORT_OK基本相同,唯一的区别是如果在@EXPROT中指定的函数或者变量,在其他的地方可以通过use 这个package直接使用该package中export的方法和函数,但是如果在@EXPORT_OK中指定了,在use时,单独use 这个package不行,必须把package中的要使用的EXPORT_OK中的方法名也列出来,如:

[xywang@mnsdev13:~/test/OO/test2]$ cat Fred_export_ok.pm
package Fred_export_ok;
use Exporter 'import';
@EXPORT_OK = qw(flintstone $var); sub flintstone{ return 99;
};
our $var="SADA1311";
1; [xywang@mnsdev13:~/test/OO/test2]$ cat test.pl
#!/usr/local/bin/perl5
use Fred_export_ok;
print $var;
print "\n"; print flintstone; [xywang@mnsdev13:~/test/OO/test2]$ ./test.pl [xywang@mnsdev13:~/test/OO/test2]$

  发现如上test脚本没有任何输出。 但是如果修改test.pl如下:

[xywang@mnsdev13:~/test/OO/test2]$ cat test.pl
#!/usr/local/bin/perl5
use Fred_export_ok qw(flintstone $var);
print $var;
print "\n"; print flintstone; [xywang@mnsdev13:~/test/OO/test2]$ ./test.pl
SADA1311
99

参考资料:https://stackoverflow.com/questions/17912400/export-vs-export-ok-in-perl

最新文章

  1. 献给广大it从业人士:早睡早起,晚睡也早起
  2. SpringRMI解析2-RmiServiceExporter逻辑脉络
  3. iOS解析JSON字符串报错Error Domain=NSCocoaErrorDomain Code=3840 "Invalid escape sequence around character 586."
  4. Linux Shell 文本处理工具集锦
  5. c# 框架学习(nop )总结-------删除功能
  6. 【架构】生成全局唯一ID的3个思路,来自一个资深架构师的总结
  7. Tomcat,Jboss,Glassfish等web容器比较选型
  8. sql 对一张表进行按照不同条件进行多次统计
  9. crontab定时任务中文乱码问题
  10. html5爱心表白
  11. hdu4462 Scaring the Birds
  12. Appium官网Introduction
  13. Python 2 中的编码
  14. Extjs学习笔记之九 数据模型(上)-extjs
  15. kvm虚拟机管理 系统自动化安装
  16. mongodb: Remote server has closed the connection
  17. Linux中的高级文本处理命令,cut命令,sed命令,awk命令
  18. 全面解读Java NIO工作原理(1)
  19. 大数据时代的图表可视化利器——highcharts,D3和百度的echarts
  20. 关于codeforces国内访问卡顿慢的最新解决办法,谷歌字体库/屏蔽facebook链接

热门文章

  1. 笔记:html常见的兼容问题
  2. Person Re-identification 系列论文笔记(四):Re-ID done right: towards good practices for person re-identification
  3. 20.libgdx,stage中默认相机的使用
  4. HashSet的运用
  5. oracle函数 to_single_byte(c1)
  6. HDU-1029_Ignatius and the Princess IV
  7. 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)
  8. websocket实现数据库更新时前端页面实时刷新
  9. JAVA内存溢出解析(转)
  10. HZOJ 匹配