实用技能GET!Perl 语言模块的安装与使用
Posted 生信者言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实用技能GET!Perl 语言模块的安装与使用相关的知识,希望对你有一定的参考价值。
【前言】
在上一节Perl编程课程中,我们介绍了Perl的文件测试与目录操作,学习了一些Perl自带函数(如chdir、glob、mkdir等)的用法。然而,有些功能强大的函数不是Perl自带的,而是由特定的Perl模块提供,能够帮助你解决一些棘手的问题。那么这一节课我们将一起来学习Perl模块的安装与使用。
《Perl零零八速成系列》(共8节课)主要是面向无Perl编程经验或者Perl语言初学者,介绍Perl的基本知识和实用编程技巧。晨光与你一路,轻松点亮编程技能,一跃成为特工级的Perl编程牛人!
【前情回顾】
【本节内容】
本节课内容主要介绍Perl 语言模块的安装与使用。
模块安装
01、
寻找模块
Perl模块有两种来源:一种是随Perl发行版本一同打包的,所以安装了Perl就可以用这些模块;另一种是从CPAN(Perl综合典藏网)下载,需要自己安装。在寻找模块之前,请先检查一下系统上是否已经安装过。可以用perldoc命令打开模块的说明文档,例如查看CGI模块文档:
$ perldoc CGI
如果不存在该模块,就会提示相应的错误信息。
安装模块
如果要安装系统上没有的模块,一般来说有两种方式:
1)下载模块文件包进行安装
以这种方式安装模块,首先需要下载打包发布的模块文件包,解压缩后,在shell中运行一系列编译和安装命令,具体方法可查看解压缩后得到的README或INSTALL文件。如果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
2)cpan安装
有些模块的工作依赖于其他模块,所以必须先安装好这些前置模块。这样一个个下载依赖模块文件包再分别进行安装的方式比较繁琐,可以用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模块之后,我们就可以用模块里面的函数进行操作了,下面我们就对常用的几个模块进行简单介绍。
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模块中的basename和dirname函数。
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
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++;
}
笔者用自己的邮箱账号密码测试了一下,运行脚本之后,很快就收到自己给自己发送的邮件(如下图),亲试有效~
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); #创建一个200x200的SVG对象
$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矢量图
【小结】
本文尽量精简地介绍了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 语言模块的安装与使用的主要内容,如果未能解决你的问题,请参考以下文章