生信分析人员如何系统入门perl(来源于知乎:田怡)

0 人赞了该文章

    生信分析人员如何系统入门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
  • 上下文环境
    • 这个比较复杂: Context tutorial
    • 就是需要理解你写的程序是如何判断你的变量的,你以为的不一定是你以为的
  • 正则表达式
    • 这也是一个非常重要的一块内容,基础用法就是m和s,一个匹配,一个替换,比较有趣的就是$1,$2等等捕获变量。
    • (=~ s{^https?://}{} =~ m{///})
  • 内建变量帐号登录
  • 控制语句(循环/条件/判断)
    • if ... elsif ... else ...
    • unless/while/next/last/for/foreach
  • 读写文件,脚本实战!
    • while(<>){
    • #do something !
    • }
    • 这是我最喜欢的一个程序模板,读取文件,根据需要处理文件,然后输出。
    • 需要实现非常多的功能,然后就可以自己总结脚本技巧,也能完全掌握perl的各种语法。
    • 在生物信息学领域,需要实现的功能有!
  • perl 单行命令
    • 我个人特别喜欢这个知识点,我也专门下载过一本书来学习,把这个教程看完就基本上能全明白:Perl One-Liners Explained, Part I: File Spacing
    • 学习单行命令的前提是掌握非常多的奇奇怪怪的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知识
    • XML/pdf/excel/Json 相关的模块可以用来读取非文本格式数据,或者输出格式化报告。
    • socket通信相关,高手甚至可以写出一个QQ的模仿版本
    • 最后不得不提的就是Bioperl了,虽然我从来没有用过,但是它的确对初学者非常有用,大多数人不提倡重复造轮子,但我个人觉得,对初学者来说,重复造轮子是一个非常好的学习方式。大家可以仿造bioperl里面的各个功能,用自己的脚本来实现!
  • 如果你感觉学的差不多了,就可以下载一些复习资料,查漏补缺:michaelgoerz.net/refcarrc.hms.harvard.edu/traiPerl Reference Card Cheat Sheetcatonmat.net/download/perudil.com/preqr.pdfRegular expressions in Perlsupport.sas.com/rnd/bas

评论

暂无评论