生信分析人員如何系統入門perl
01-31
- 生信分析人員如何系統入門perl? | 生信菜鳥團
- 資源
- 兩個半小時入門指導:Perl 中文:兩個半小時的 Perl 之旅 - 開源中國社區
- 21天學完:http://ft-sipil.unila.ac.id/dbooks/(ebook%20pdf)%20Teach%20Yourself%20Perl%20in%2021%20Days.pdf
- 還有大小駱駝書,建議都看完,以囫圇吞棗的方式閱讀,只看基礎知識來入門,難點全部跳過。
- 官網:The Perl Programming Language
- 函數如何用,都可以在perl - perldoc.perl.org 查到
- 論壇:The Monastery Gates
- 三種變數
- $ 表示單個變數 用單雙引號區別,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裡面的各個功能,用自己的腳本來實現!
- 如果你感覺學的差不多了,就可以下載一些複習資料,查漏補缺:http://michaelgoerz.net/refcards/perl_refcard.pdfhttps://rc.hms.harvard.edu/training/perl/Perl%20Cheat%20Sheet.pdfPerl Reference Card Cheat Sheethttp://www.catonmat.net/download/perl.predefined.variables.pdfhttp://www.erudil.com/preqr.pdfRegular expressions in Perlhttps://support.sas.com/rnd/base/datastep/perl_regexp/regexp-tip-sheet.pdf
推薦閱讀:
※學Perl還是Python?
※客觀地說,Perl 是不是快死了?
※如何評價唐鳳(唐宗漢)這個人?
※有哪些比較經典的 Perl 入門書籍?
※敢問 Perl 比 Python 好在哪裡?