生信自学论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: TCGA GEO R
查看: 892|回复: 3

快速入门Perl

  [复制链接]

6

主题

34

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2017-9-19 09:59:48 | 显示全部楼层 |阅读模式
生信自学网课程
Perl是典型的脚本语言,短小精悍,非常容易上手,尤其适合处理文本,数据,以及系统管理。它在老一辈的生物信息学分析人员中非常流行,出于历史遗留原因大家肯定会或多或少地接触 Perl。
一、入门资料
两个半小时入门指导:https://qntm.org/files/perl/perl.html
21天学完 perl,自己搜索下载PDF书籍吧!
大小骆驼书,建议都看完,以囫囵吞枣的方式阅读,只看基础知识来入门,难点全部跳过。
函数如何用:都可以在http://perldoc.perl.org/perl.html查到
生信自学网:http://www.biowolf.cn

最后,致敬创造了perl这个编程语言的LarryWall !

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

6

主题

34

帖子

90

积分

注册会员

Rank: 2

积分
90
 楼主| 发表于 2017-9-19 10:00:51 | 显示全部楼层
生信自学网课程
二、 知识要点

在看书的同时,你必须记住和熟练使用的知识点是下面这些:

理解perl里面的三种变量表示方式

     $ 表示单个变量
    用单双引号区别,q(),qq()
    @ 表示多个变量组成的数组,qw()
     % 表示关系型变量-hash
    变量不严格区分类型,没有int/float/double/char这样的概念

三种变量都有对应的操作技巧:

简单变量的操作函数

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

上下文环境
这个比较复杂: http://www.perlmonks.org/?node_id=738558,就是需要理解你写的程序是如何判断你的变量的,你以为的不一定是你以为的。

正则表达式
这也是一个非常重要的一块内容,基础用法就是m和s,一个匹配,一个替换,比较有趣的就是1,2等等捕获变量。

内建变量
就是perl语言设计的时候定义了一大堆的全局变量($_ $, $0 $> $< $!="" $.="" @argv="" @f="" @_="" @inc="" %env="">)
。外表上看起来都是一个$ @ %符号后面加上一大堆的奇奇怪怪的字符,表示一些特殊变量,这也是perl语言饱受诟病的原因。但是有些非常重要,懂了它之后写程序会方便。下载一个表格,里面有近100个预定义变量需要学习的。

控制语句(循环/条件/判断)
if ... elsif ... else ...
unless/while/next/last/for/foreach

读写文件,脚本实战!

while(<>){

#do something !

}

这是我最喜欢的一个程序模板,读取文件,根据需要处理文件,然后输出。需要实现非常多的功能,然后就可以自己总结脚本技巧,也能完全掌握perl的各种语法。在生物信息学领域,需要实现的功能有!

perl 单行命令
我个人特别喜欢这个知识点,我也专门下载过一本书来学习,把这个教程看完就基本上能全明白:http://www.catonmat.net/blog/perl-one-liners-explained-part-one/。学习单行命令的前提是掌握非常多的奇奇怪怪的perl自定义变量和perl的基础语法,用熟练了之后就非常方便,很多生物信息学数据处理过程我现在基本不写脚本,都是直接写一行命令,完全代替了shell脚本里面的awk、sed/grep系列命令。(perl -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里面的各个功能,用自己的脚本来实现!


回复

使用道具 举报

6

主题

34

帖子

90

积分

注册会员

Rank: 2

积分
90
 楼主| 发表于 2017-9-19 10:01:34 | 显示全部楼层
回复

使用道具 举报

0

主题

7

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2017-9-21 09:48:43 | 显示全部楼层
生信自学网课程
看着比R难多了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|生信自学网论坛 ( 粤ICP备14097033号 )

GMT+8, 2018-12-18 02:49 , Processed in 0.151398 second(s), 20 queries .

Powered by biowolf.cn

© 2001-2017 BioWolf

快速回复 返回顶部 返回列表