首先要理解perl里面的三种变量表示方式:html
$ 表示单个变量 用单双引号区别,q(),qq()
@ 表示多个变量组成的数组,qw()
% 表示关系型变量-hash
变量不严格区分类型,没有int/float/double/char这样的概念
以及对这些简单变量的操做函数node
# Numerical operators: <, >, <=, >=, ==, !=, <=>, +, *
# String operators: lt, gt, le, ge, eq, ne, cmp, ., x
数组操做(pop/push/shift/unshift/splice/map/grep/join/split/sort/reverse)
hash操做方式(keys,values,each,delete,exists)
变量内容交换,字符型转为数值型,字符串转为字符数组,字符串变量,heredoc,字符串分割,字符串截取,
随机数生成,取整,各类几率分布数,多维矩阵如何操做,进制转换
hash翻转,数组转hash
上下文环境mysql
就是须要理解你写的程序是如何判断你的变量的,你觉得的不必定是你觉得的
正则表达式
这也是一个很是重要的一块内容,基础用法就是m和s,一个匹配,一个替换,比较有趣的就是$1,$2等等捕获变量。
(=~ s{^https?://}{} =~ m{///})
内建变量正则表达式
就是perl语言设计的时候定义了一大堆的全局变量($_ $, $0 $> $< $! $. @ARGV @F @_ @INC %ENV %SIG
外表上看起来都是一个$/@/%符号后面加上一大堆的奇奇怪怪的字符,表示一些特殊变量,这也是perl语言饱受诟病的缘由。
可是有些很是重要,懂了它以后写程序会方便
下载一个表格,里面有近100个预约义变量须要学习的
控制语句(循环/条件/判断)
if ... elsif ... else ...
unless/while/next/last/for/foreach
读写文件,脚本实战!sql
while(<>){
#do something !
}
这是我最喜欢的一个程序模板,读取文件,根据须要处理文件,而后输出。
须要实现很是多的功能,而后就能够本身总结脚本技巧,也能彻底掌握perl的各类语法。
在生物信息学领域,须要实现的功能有!
perl 单行命令shell
学习单行命令的前提是掌握很是多的奇奇怪怪的perl自定义变量,和perl的基础语法,用熟练了以后就很是方便,不少生物信息学数据处理过程我如今基本不写脚本,都是直接写一行命令,彻底代替了shell脚本里面的awk、sed/grep系列命令。
(-p -a -n -a -l -i -F -M)
预约义函数数据库
perl 是一个很是精简的语言,自定义的函数很是少,连min max这样常见的函数都没有,若是你须要使用这样的功能,要么本身写一个函数,要么使用增强版的包,perl的包很是多。
下面列出一些,我经常使用的包
程序必备 use/die/warn/print/open/close/<>/
数学函数sin/cos/log/abs/rand/srand/sqrt
字符串函数 uc/lc/scaler/index/rindex/length/pos/substr/sprintf/chop/chomp/hex/int/oct/ord/chr/unpack/unencode
defined/undef
系统操做相关编程
perl语言是跨平台的,由于它的执行靠的是perl解释器,而perl的解释器能够安装在任何机器上面。因此能够用perl来代替不少系统管理工做。
系统命令调用
文件句柄操做(STDIN,STDOUT,STDERR,ARGV,DATA,)
系统文件管理(mkdir/chdir/opendir/closedir/readdir/telldir/rmdir/)
一些高级技巧数组
自定义函数 sub , 参数传递,数组传递,返回值
模块操做(模块安装,加载,模块路径,模块函数引用)
引用(变量的变量)
选择一个好的编辑器-编译器,editplus,notepad++,jEdit,编程习惯的养成。
搞清楚perl版本的问题,还有程序编码的问题,中文显示的问题
程序调试
perl常见模块学习
perl和LWP/HTML作网络爬虫必备,重点是DOM如何解析
perl和CGI编程,作网站的神器,重点是html基础知识
DBI相关数据库,用perl来操做mysql等,固然,重点是mysql知识
GD and GD::Graph 能够用来画图,可是基本上没有人用了,除了CIRCOS画圈圈图火起来了。
TK模块,能够编写GUI界面程序,可是也几乎没有人用了。
XML/pdf/excel/Json 相关的模块能够用来读取非文本格式数据,或者输出格式化报告。
socket通讯相关,高手甚至能够写出一个QQ的模仿版本
最后不得不提的就是Bioperl了,虽然我历来没有用过,可是它的确对初学者很是有用,大多数人不提倡重复造轮子,但我我的以为,对初学者来讲,重复造轮子是一个很是好的学习方式。你们能够仿造bioperl里面的各个功能,用本身的脚原本实现!
若是你感受学的差很少了,就能够下载一些复习资料,查漏补缺:网络