Perl使用模块

安装模块后,都会有对应的文档,可以通过perldoc MODULE_NAME获取模块的使用帮助。

例如:获取File::Utils的使用帮助。

perldoc File::Utils

要在perl程序中使用模块,需要使用use来装载(load)模块。例如,File::Basename模块:

#!/usr/bin/perl

use File::Basename;

一般来说,所有要装载的模块都会写在perl程序的开头,因为use语句是程序编译期间执行的,而且以后要查看、修改程序中使用的模块也方便。当然,这并非必须,可以在任意地方书写use语句。

装载模块后,模块内的属性就会导入到当前程序的名称空间供当前程序使用。例如,File::Basename模块提供的两个子程序是basename()和dirname(),他们分别获取给定文件路径的basename和dirname。

#!/usr/bin/perl
use File::Basename;

my $basename = basename( "/usr/bin/perl" );
my $dirname = dirname( "/usr/bin/" );
print "$basename\n$dirname";

或者,只导入给定的函数

use File::Basename ('basename','dirname');

推荐直接用qw()列表的方式,即使只导入一个函数

use File::Basename qw(basename dirname);

函数导入到当前名称空间后,模块中的函数可能会和当前程序文件中定义的同名子程序冲突。这时需要指定函数的全名:

my $dirname = File::Basename::dirname( "/usr/bin/" );

如果,导入模块时给出一个空列表,它和不给列表是不一样的。也就是说,下面两种方式是不等价的:

use File::Basename;
use File::Basename ();

前者表示导入模块的属性包括一些函数。而后者表示什么都不导入,这时如果要使用这个模块中的函数,只能使用全名。

另外,有些模块比较复杂,函数属性方法比较多,一般这时候会提供标签分组功能,其实它们是一堆函数集合。这样可以在导入的时候按照分组标签来导入。常见的一个标签:all,它表示导入所有属性

use CGI qw(:all);

如果模块还提供了一个名为tag的标签,那么可以导入这个标签

use MODULE_NAME qw(:tag);

想要知道模块是否提供了标签,以及提供了哪些标签,可以man MODULE获取。例如,CGI模块的man CGI文档中有一段内容如下:

Here is a list of the function sets you can import:

    :cgi
       Import all CGI-handling methods,such as param(),path_info() and the like.

    :form
       Import all fill-out form generating methods,such as textfield().

    :html2
       Import all methods that generate HTML 2.0 standard elements.

    :html3
       Import all methods that generate HTML 3.0 elements (such as <table>,<super> and <sub>).

    :html4
       Import all methods that generate HTML 4 elements (such as <abbrev>,<acronym> and <thead>).

    :netscape
       Import the <blink>,<fontsize> and <center> tags.

    :html
       Import all HTML-generating shortcuts (i.e. 'html2','html3','html4' and 'netscape')

    :standard
       Import "standard" features,'html2','html4','form' and 'cgi'.

    :all
        Import all the available methods.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...