实用技能GET!Perl 语言模块的安装与使用

Posted 生信者言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实用技能GET!Perl 语言模块的安装与使用相关的知识,希望对你有一定的参考价值。



【前言】

在上一节Perl编程课程中,我们介绍了Perl的文件测试与目录操作,学习了一些Perl自带函数(chdirglobmkdir)的用法。然而,有些功能强大的函数不是Perl自带的,而是由特定的Perl模块提供,能够帮助你解决一些棘手的问题。那么这一节课我们将一起来学习Perl模块的安装与使用。 

《Perl零零八速成系列》(共8节课)主要是面向无Perl编程经验或者Perl语言初学者,介绍Perl的基本知识和实用编程技巧。晨光与你一路,轻松点亮编程技能,一跃成为特工级的Perl编程牛人!

【前情回顾】


【本节内容】

本节课内容主要介绍Perl 语言模块的安装与使用。



模块安装


01、



 寻找模块 



 

Perl模块有两种来源:一种是随Perl发行版本一同打包的,所以安装了Perl就可以用这些模块;另一种是从CPANPerl综合典藏网)下载,需要自己安装。在寻找模块之前,请先检查一下系统上是否已经安装过。可以用perldoc命令打开模块的说明文档,例如查看CGI模块文档:

 

$ perldoc CGI

 

如果不存在该模块,就会提示相应的错误信息。

 


02

 安装模块 



 

如果要安装系统上没有的模块,一般来说有两种方式:

 

1)下载模块文件包进行安装

 

以这种方式安装模块,首先需要下载打包发布的模块文件包,解压缩后,在shell中运行一系列编译和安装命令,具体方法可查看解压缩后得到的READMEINSTALL文件。如果Perl模块使用MakeMaker封装,可以用下面的流程安装:

 

$ perl Makefile.PL

$ make install

 

这样模块会默认被安装到系统指定的目录,如果你没有相应的权限,可以在Makefile.PL 后面加上INSTALL_BASE参数(具体参数以READMEINSTALL文件为准),指定安装目录。

 

$ perl Makefile.PL INSTALL_BASE=/Users/fred/lib

 

有些Perl模块用的是Module::Build 编译的,安装流程如下:

$ perl Build.PL

$ ./Build install

如果需要指定安装目录,可以添加参数:

 

$ perl Build.PL --install_base=/Users/fred/lib

 


2cpan安装

 

有些模块的工作依赖于其他模块,所以必须先安装好这些前置模块。这样一个个下载依赖模块文件包再分别进行安装的方式比较繁琐,可以用Perl自带的CPAN.pm模块进行安装,具体使用方法:

 

$ cpan Module::CoreList LWP CGI::Prototype

 

另外,还有一个非常轻巧的工具cpanm,可以到CPAN下载安装,它的使用方法与cpan类似:

 

$ cpanm DBI WWW::Mechanize -l /Users/fred/lib

 

-l 参数可以接待安装路径,安装完模块之后,还需要将安装路径添加到环境变量,才可以正常使用:

 

$ export PERL5LIB=/Users/fred/lib/perl5:$PERL5LIB

 

 

模块使用

 

安装完相应的Perl模块之后,我们就可以用模块里面的函数进行操作了,下面我们就对常用的几个模块进行简单介绍。

 

01

 File::Basename模块



 

File::Basename模块是Perl自带的模块,可以用来获取文件名和路径等信息。在使用它的时候,需要在程序开头的地方用use指令声明加载该模块:

 

use File::Basename;

 

程序编译过程中,就会寻找此模块的源代码并加载进来,接着Perl就好像多了一些新函数,可供程序员随意使用。

 

use File::Basename qw/basename dirname/;

 

my $name ="/usr/local/bin/perl";

my $basename =basename $name;

my $dirname=dirname $name;

print "$dirname ";

print"$basename ";

 

运行结果:

/usr/local/bin

perl

 

PS: qw/basename dirname / 表明只加载File::Basename模块中的basenamedirname函数。

 

 

02

 Cwd模块


 

Cwd模块也是Perl自带的模块,它可以用来获取当前路径的绝对路径信息:

 

use Cwd 'abs_path';

 

my $abs_path =abs_path("./");

print "$abs_path ";

 

输出结果:

/


 

03

 DateTime模块

 

DateTime模块是创建自定义日期(Date)对象的最方便的方法,并且包括了用于分析、格式化、计算持续Perl时间和操控时区的模块。一般来说,在需要本地化或者定义用于Perl时间信息的自定义存储容器的时候,您要将这个模块用作创建与日期相关的新对象。

 

use DateTime;

my $dt = DateTime->from_epoch( epoch => time );

print $dt->ymd," ";
print $dt->ymd('/')," ";
print $dt->ymd('')," ";


运行结果:

2017-12-07
2017/12/07
20171207


 

04

 LWP模块

 

LWP (Library for WWW in Perl) 是一个由多个模块组成,用来获取网络数据的的模块组,每一个 LWP 模块都自带详细的文档,且需要从CPAN下载安装。这里我们介绍一个简单的模块,利用 LWP::Simple 获取网页。

 

如果只是要拿到某个网页,那使用LWP::Simple 里的函数是最简单的。通过调用 get() 函数,就可以得到相关网址的内容。如果没有发生错误,get 函数返回此网页,否则返回 undef。例子如下:

 

use LWP::Simple;

 

open OUT,">test.html" || die $!;

my $content = get('http://www.yahoo.com.cn');

print OUT $content;

 

运行结果:

生成一个test.html文件,用浏览器打开就是yahoo的主页

 

另外,如果要在命令行里运行,getprint函数非常方便。如果没有发生错误,它会把网页内容输出到 STDOUT,否则将会有错误信息输出到 STDERR。例如:

 

perl -MLWP::Simple -e "getprint 'http://www.yahoo.com.cn'" > test.html


实用技能GET!Perl 语言模块的安装与使用

 


05

 Mail::Sender模块

 

在监控系统中,如果管理员要发送报警邮件到指定用户的邮箱,不可能一封封地发邮件,他可以选择Mail::Sender模块通过SMTP服务器来实现批量发送邮件,它也需要从CPAN下载安装。示例代码如下:

 

#!/usr/bin/perl -w

use strict;

use Mail::Sender;

 

my $count = 1;

while($count <= 2;){

my $sender = Mail::Sender->new({

    smtp => 'smtp.163.com',

        #这里以163为例

    auth => 'LOGIN',

    authid => '这里写你的163邮箱用户名:username',

    authpwd => '这里写你的邮箱密码:password'}

) or die "Cannot send mail:$! ";

 

my $messages ='hello这里是要发送的内容';

 

    $sender->MailMsg({

        to => '要发送到哪个邮箱:test@qq.com',

        subject => '邮箱标题',

        msg => $messages}

    );

$sender->Close();

print "$count封发送完毕! ";

$count++;

 

}

 

笔者用自己的邮箱账号密码测试了一下,运行脚本之后,很快就收到自己给自己发送的邮件(如下图),亲试有效~

 

实用技能GET!Perl 语言模块的安装与使用



06

 SVG模块

 

不少同学可能对SVG不是特别熟悉,SVG 意为可缩放矢量图形(ScalableVector Graphics),也就是一种可以无限放大但不失真的图片格式。Perl 语言SVG模块是一个强大的画图模块,可以帮助程序员制作各种SVG格式图形,需要从CPAN下载安装。下面我们就来学习一下简单SVG矢量图的制作:

 

#!/usr/bin/perl

use strict;

use SVG;

 

my $svg =SVG->new(width => 200,

                   height => 200); #创建一个200x200SVG对象

 

$svg->circle(id=> "this_circle",

              cx => 100,

              cy => 100,

              r => 50,

              style=>{stroke=>'red',

                      fill=>'green'

                      }

              );

#SVG对象中添加一个圆形,圆心的位置是(100,100),半径是50,用green绿色填充,边缘使用red红色

 

my $out=$svg->xmlify;

#使用xmlify创建输出

 

open OUT,">test1.svg";

print OUT $out;

 

运行结果:

生成test1.svg矢量图

实用技能GET!Perl 语言模块的安装与使用


【小结】

本文尽量精简地介绍了Perl语言中的模块安装与使用,并配上简单的示例供大家练习巩固。由于篇幅有限,难以深入展开说明,谨以此文,送与初入门Perl语言的朋友们。

  

下一节课我们将学习:perl高级技巧,敬请大家关注!

 


参考资料:

《Perl语言入门第六版(中文版)》

http://www.runoob.com/perl/perl-tutorial.html

http://www.runoob.com/try/runcode.phpfilename=HelloWorld&type=perl

http://www.newsmth.net/nForum/#!article/Perl/53484


/End.



生信者言推荐阅读

扫码关注,获取更多精彩内容

喜马拉雅FM搜索并订阅:生信者言;收听内容:

《一分钟听懂NGS基础概念》,让生信分析不再遥不可及

《亲爱的姑娘,你值得被温柔以待》,11个真实的人物故事

《众病之王:癌症传》,一起聆听人类对抗癌症的斗争史

回复文字:果然科学,看一篇好玩的科普文。

以上是关于实用技能GET!Perl 语言模块的安装与使用的主要内容,如果未能解决你的问题,请参考以下文章

Perl_实用报表提取语言

Perl零零八速成系列---字符串操作与排序

Perl的简介及安装

Python 实用技巧

Perl语言及安装运行环境

Perl语言及安装运行环境