自定义模块的创建和使用

创建perl模块

Perl 模块是一个可重复使用的包,模块的名字与包名相同,定义的文件后缀为 .pm。

  1. 末尾 1; 执行返回 TRUE,这是必须的,否则返回错误。

  2. Perl 中每个包有一个单独的符号表,定义语法为:

package mypack;

此语句定义一个名为 mypack 的包,在此后定义的所有变量和子程序的名字都存贮在该包关联的符号表中,直到遇到另一个 package 语句为止。

以下是自定义的timer.pm计时器模块,以面向对象方式编程,便于复用。

package timer;

use Time::HiRes qw(sleep gettimeofday tv_interval);

#构造函数
sub new{
     my $class = shift();
     my $self = ();

     $self->{"tm_begin"} = gettimeofday();    
     bless $self, $class; 

     return $self;
}

#方法 获取运行时间
sub get_interval{
    my ($self) = @_;
    my $interval = gettimeofday() - $self->{"tm_begin"};

    return sprintf("%.3f", $interval);
}

#方法 判断是否超时
sub is_time_out{   
    my($self, $time_out) = @_;

    if (!$time_out){
        print "time param is empty\n";
        return 1;
    }

    if ($self->get_interval() > $time_out){
        return 1; 
    }else{
        return 0;
    }
}

1;#必须要否则编译错误

使用自定义模块

使用自定义timer模块,有以下两个注意要点:

1. 使用use或require导出模块符号表
2. 指定模块的引用路径

下面在test.pl中示范使用自定义的timer模块,具体代码如下:

#指定路径的两个方法
#方法一:use lib ".";
#方法二:
BEGIN {
    push (@INC,".");
}
#导出符号表
require timer;

#使用包模块
my $timer = timer->new();
sleep(2);
print $timer->get_interval(), "\n";
print "is time out" if $timer->is_time_out(1);

运行结果:

2.000
is time out

参考:http://blog.sina.com.cn/s/blog_4e9bd2e20100v0z3.html

posted @ 2017-12-19 23:05  小怪兽&奥特曼  阅读(186)  评论(0编辑  收藏  举报