QQ登錄

只需一步,快速開始

使用微信賬號登錄

查看: 4144|回復: 3
打印 上一主題 下一主題

快速入門Perl

  [復制鏈接]

該用戶從未簽到

6

主題

34

帖子

100

積分

注冊會員

Rank: 2

積分
100
樓主
跳轉到指定樓層
發表于 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.hbnisg.live

最后,致敬創造了perl這個編程語言的LarryWall !

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?立即注冊

x
分享到:
回復

使用道具 舉報

該用戶從未簽到

6

主題

34

帖子

100

積分

注冊會員

Rank: 2

積分
100
沙發
 樓主| 發表于 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

帖子

100

積分

注冊會員

Rank: 2

積分
100
板凳
 樓主| 發表于 2017-9-19 10:01:34 | 只看該作者
回復 支持 反對

使用道具 舉報

該用戶從未簽到

0

主題

7

帖子

16

積分

新手上路

Rank: 1

積分
16
地板
發表于 2017-9-21 09:48:43 | 只看該作者
生信自學課堂
看著比R難多了
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

客服熱線
18520221056(微信) 周一至周日:09:00 - 22:00
公司官網:http://www.hbnisg.live

速科生物是一家融生信創新、設計、技術開發、服務為核心的生物公司,生信自學網專注于生信培訓周邊課程開發和代碼設計,堅持為客戶打造高品質的精品課程和培訓服務。

Powered by 生信自學網 © 2016-2019 江西速科生物

QQ|生信自學論壇 ( 贛ICP備19001400號-1 )

GMT+8, 2019-9-8 14:00 , Processed in 0.143738 second(s), 25 queries .

快速回復 返回頂部 返回列表
12134期6场半全场