perl语言小骆驼学习第1章笔记

Posted 果子学生信

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl语言小骆驼学习第1章笔记相关的知识,希望对你有一定的参考价值。


暑假参加了陈连福老师举办的生信十日课程,对生信分析、linux系统以及perl语言有了初步了解。
回家后发现实际上对于临床专业的科研人员来说:

用好现有的数据库已经绰绰有余,而一般而言我们所说的生信也就是可视化数据库的使用,以及使用R语言作图。

对于稍微有点追求,导师宽容,经济富裕,时间充足,买得起服务器的课题组,系统地学习生信知识尤为重要。

所以我要系统地整理已经有的数据库,并且要做个记录,同时学习perl语言,linux系统,python,R语言。

教程准备

  • 准备的教程是《perl语言入门》俗称小骆驼,纸质版和电子版都有
  • 《鸟叔的linux私房菜》http://linux.vbird.org/linux_basic/暂时没有购买纸质版,网上有完整电子版
  • 《精通正则表达式》猫头鹰那本

此外,补充一句

作笔记是因为记性差(尤其是到了30岁),发微信是为了交朋友。就是这样


今天学习了《perl语言入门》第一章,这本书又叫小骆驼,传说那几本著名的生信教程封面全是动物,正则表达式是猫头鹰,perl语言编程是大骆驼,学习python是个大老鼠。而我们这支小骆驼名称还有个来历:

骆驼长得有点丑陋,但它们努力工作,哪怕严酷环境下也一样不辞辛劳。骆驼能在种种不利的条件下帮你把事情搞定,尽管它长相丑陋,气味难闻,偶尔冷不丁还会对你吐上几口口水。怎么说呢,perl有时确实有点像他。

介绍一下perl

perl不是缩写词,反倒是溯写字,也就是说当年他的创造者Larry wall首先想到了perl这个词,再想到如何展开解释的,其中一个解释是“Practical Extraction and Report Language(实用摘录与报表语言)”。反正不管他了,暂时的理解就是,这个语言是用于生信分析时处理脚本用的,简单说来,假设我们有一个10000行的文本,我想要把奇数行提取出来,或者把偶数列提取出来,或者把以>开头的行提取出来,这时候就需要脚本语言,而python也可以干这个事情,老一辈的生信学者喜欢用perl,据说用了会上瘾,新一代有些人喜欢用python。

今天的习题

!/usr/bin/perl

@lines = perldoc -u -fatan2;
 foreach (@lines){
           s/\w<([^>]+)>/\U$1/g;
     print;
 }

第一次看这样的文字是在课上,大家都说是天书,其中perl一个被人嫌弃的原因就是他的可读性不高(跟语言本身和使用者有很大关系),经过一段时间的学习,现在竟然能够看懂了。
在这个里面看不懂的最主要原因应该是

s/\w<([^>]+)>/\U$1/g;

这里使用了正则表达式,什么是正则表达式呢,我使用李笑来的定义阐述一下(补充一句,李笑来在“得到”专栏的《通往财富自由之路》课程实在是太有用了)

正则表达式是用来匹配、捕获特定字符串的工具;之后,我们还可以对匹配到、捕获到的对象进行处理,比如替换。

这么一说就很简单明了。

  • s///g 表示全局匹配后替换,也就是说三个斜杠中出现了两个空,第一个是我想匹配的内容,第二个空是要替换的内容
  • \w<([^>]+)> 这是第一个空的内容,他表示有一串字符,包含有一对<>符号,其中第一个<前面只能有一个字符,两个<>之间不能出现>符号,其中第一个
  • \U$1 这是第二个空的内容,¥1表示匹配到的<>里的字符,\U表示把后面的字符全部大写

整个语句表示,打开一个文本,对于每一符合条件的字符匹配,替换,

原始文本如下(截取片段)

X< atan2 > X< arctangent > X< tan > X< tangent >

运行后结果如下:

ATAN2 ARCTANGENT TAN TANGENT


好了今天的内容就是这样
没有图片是因为用的双系统,操作linux的时候无法保存,所以明天准备在mac上面练习。