目录

Perl 语言学习

从语法特点、模块安装到生态项目的入门指南

Perl 全称为 Practical Extraction and Report Language,意为「实用提取和报告语言」。

Perl 由 Larry Wall 于 1987 年创建,其灵感来自 C、sed、awk、shell 脚本以及许多其他编程语言的特性。

Perl 的哲学是「There’s More Than One Way To Do It」(通常缩写为 TMTOWTDI,发音类似「Tim Toady」),即「做一件事不止一种方法」。因此,Perl 也常被称为「程序员的瑞士军刀」。

  • Perl 语法类似于 C 语言(Perl 源于 Unix),语句由分号划分,代码层次使用花括号 {} 划分,但不必显式声明变量类型。
  • 标量变量以 $ 开头(如 $name),数组以 @ 开头(如 @name),哈希以 % 开头(如 %name),这三类是类型标识符;文件句柄则没有特殊前缀。
  • 哈希可以用列表来创建,但访问键值时使用花括号 {} 而非圆括号(这一点尤其需要注意)。
  • 数值之间比较用 ==>=<=!=,字符串之间比较则用 eqgtltgele
  • print 函数不一定需要括号,常见用法有:print $name(直接输出标量);print '$name'(单引号原样输出,不会替换变量,基本不用);print "$name"(双引号会自动替换变量,常用)。注意:当 print 用于向文件句柄输出时,句柄与列表之间不能用逗号,只能用空格分隔,例如 print FH "hello\n";
  • @_ 是子程序接收参数的默认数组,可以从中取实参;$_ 是默认变量,表示在不显式指定时程序正在处理的当前变量;shift 函数会将数组的第一个元素(即 $array[0])移出并返回。
  • shift 函数缺省时操作 @_,因此常放在子程序开头用于接收参数,或放在文件开头用于接收命令行参数。
  • 文件句柄与文件的关系:文件必须先打开并被赋予句柄,才能操作;某些句柄可直接使用,如 STDINSTDOUTSTDERR;广义上,标量变量也是一种代表数据的「句柄」。
  • Perl 中数值和字符串都可以使用递增(++)和递减(--)运算符。

自 1994 年 10 月 17 日发布的 Perl 5.000 起,Perl 引入了模块(module)的概念,用以提供面向对象编程能力。这是 Perl 语言发展史上的一个里程碑。此后,社区开发者贡献了大量功能强大、构思精巧的 Perl 模块,极大地扩展了 Perl 的功能。

CPAN(Comprehensive Perl Archive Network,综合 Perl 归档网络)是 Perl 模块最大的集散地,收录了几乎所有的 Perl 模块。CPAN 自 1995 年 10 月起上线,据其官网统计,目前已收录由 14,000 余位作者上传的 4 万余个发行版(distribution)。

Perl 作为生物信息学数据预处理、文本处理和格式转换中的一把「瑞士军刀」,其强大与重要性不言而喻。下面介绍各平台下 Perl 模块的安装方法,以安装 Bio::SeqIO 模块为例。

Linux/Unix 下安装 Perl 模块主要有两种方法:手工安装和自动安装。

  • 手工安装:从 CPAN 下载所需模块的源码包,手工编译、安装。
  • 自动安装:使用 CPAN 客户端自动完成下载、编译、安装的全过程。

手工安装

以 BioPerl 1.7.5 为例(当前最新稳定版为 1.7.8):

tar xvzf BioPerl-1.7.5.tar.gz
cd BioPerl-1.7.5
perl Makefile.PL            # 可选: PREFIX=/home/yourname/perl_modules
make
make test                   # 测试模块(可选)
make install

# 验证是否安装成功,若该命令无任何输出则表示成功
perl -MBio::SeqIO -e1

自动安装

Linux/Unix 下自动安装 Perl 模块主要有两种方式:

  • 使用 perl -MCPAN -e 'install 模块名'
  • 直接使用 cpan 模块名 命令。

二者本质上都是通过与 CPAN 交互来完成自动下载、编译、安装。初次运行 CPAN 客户端时需要做一些配置,执行下面的命令进入交互式 shell 即可:

perl -MCPAN -e shell
  • lcov —— GCC 覆盖率测试工具的前端,生成 HTML 格式的代码覆盖率报告。
  • Mojolicious —— Perl 实时 Web 开发框架。
  • Dancer2 —— Perl 轻量级 Web 框架。
  • MySQLTuner —— MySQL 性能调优脚本。

相关内容