博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
perl EXPORT模块
阅读量:5100 次
发布时间:2019-06-13

本文共 2764 字,大约阅读时间需要 9 分钟。

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 requestsub 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 9999dad444ff或者;[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 requestsub 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 9999dad444ff在另外的文件 你希望使用你的模块:use YourModule qw(frobnicate);      # import listed symbolsfrobnicate ($left, $right)          # calls YourModule::frobnicateDESCRIPTION :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 @EXPORTHow 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.

转载于:https://www.cnblogs.com/zhaoyangjian724/p/6199960.html

你可能感兴趣的文章
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
getElement的几中属性介绍
查看>>
STL容器之vector
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
python3 生成器与迭代器
查看>>
git .gitignore 文件不起作用
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
cer证书签名验证
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
QML学习笔记之一
查看>>
App右上角数字
查看>>
小算法
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>