Perl module的一些小结收藏

Perl Module

关于Perl module改如何使用,如何编写,现在初步有一些肤浅的体会,

总结如下:

1. 如何引用不在系统默认路径中的module?
方法1:使用lib
use lib qw (/your/path/to/module);

貌似这几乎等价于BEGIN {unshift (@INC, LIST)}

方法2:修改@INC
BEGIN { unshift @INC, '/home/roger/sandbox';}
use job::func;
为什么是unshift,而不是push?因为unshift能把要增加的
项加入到@INC的开头,这样每次搜索@INC时,总是最先找到
刚新加入@INC的目录

2. 如何避免多个路径下同名的module?
方法1:目录命名尽量使用 "公司名/组织名/项目名/" 为前缀
比方说: COMPANY/PROJECT/Test

方法2:使用“::”
use This::function
use That::function

3. use和require
use在编译时运行,require在运行时工作,所以最好使用use,
这样能够尽早发现问题

4. module中导出函数或变量符号
===============================
package Func::Job;
require Exporter;
use vars qw($VERSION @ISA @EXPORT);
@ISA = qw(Exporter);
$VERSION = '0.01';

@EXPORT =qw (init);

sub init
{
...
}
sub execute
{
...
}
===================================
放到@EXPORT中的符号是可以直接调用的,
init();
只要你的perl脚本use了这个module
不在@EXPORT中的符号不能直接调用,但是可以通过界定符迂回完成:
Func::Job::execute()

注意这里使用了Exporter这个module, 任何一个module要导出符号,最好
通过Exporter完成,这需要我们的module继承Exporter的特性,如何继承?

方式1:
package Func::Job;
use base qw(Exporter);

base可以建立继承关系;
方式2:
package Func::Job;
require Exporter;
use vars qw($VERSION @ISA @EXPORT);
@ISA = qw (Exporter);

这类似于
package Baz;
BEGIN {
    require Foo;
    require Bar;
    push @ISA, qw(Foo Bar);
}
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值