zoukankan      html  css  js  c++  java
  • 自定义模块的创建和使用

    创建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
    ";
            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(), "
    ";
    print "is time out" if $timer->is_time_out(1);

    运行结果:

    2.000
    is time out

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

  • 相关阅读:
    shiro
    leetcode696 C++ 36ms 计算二进制子串
    leetcode557 C++ 56ms 反转字符串中的每个单词
    leetcode657 C++ 16ms 判断回环
    leetcode709 C++ 4ms 转换成小写字母
    leetcode141 C++ 8ms 环形链表
    leetcode160 C++ 32ms 相交链表
    leetcode234 C++ 28ms 回文链表
    leetcode203 C++ 28ms 删除链表中满足条件的节点
    leetcode83 C++ 12ms 删除有序链表中的重复元素
  • 原文地址:https://www.cnblogs.com/jinxiang1224/p/8468182.html
Copyright © 2011-2022 走看看