Perl學習建議(轉)

首先要理解perl裏面的三種變量表示方式:html

$ 表示單個變量  用單雙引號區別,q(),qq()
@ 表示多個變量組成的數組,qw()
% 表示關係型變量-hash
變量不嚴格區分類型,沒有int/float/double/char這樣的概念
 

以及對這些簡單變量的操做函數node

# 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
 
 

上下文環境mysql

就是須要理解你寫的程序是如何判斷你的變量的,你覺得的不必定是你覺得的
 
正則表達式
這也是一個很是重要的一塊內容,基礎用法就是m和s,一個匹配,一個替換,比較有趣的就是$1,$2等等捕獲變量。
 
(=~ s{^https?://}{}   =~ m{///})
 

內建變量正則表達式

就是perl語言設計的時候定義了一大堆的全局變量($_  $, $0 $> $< $! $. @ARGV @F @_ @INC %ENV %SIG
外表上看起來都是一個$/@/%符號後面加上一大堆的奇奇怪怪的字符,表示一些特殊變量,這也是perl語言飽受詬病的緣由。
可是有些很是重要,懂了它以後寫程序會方便
下載一個表格,裏面有近100個預約義變量須要學習的
 
控制語句(循環/條件/判斷)
if ... elsif ... else ...
unless/while/next/last/for/foreach
 

讀寫文件,腳本實戰!sql

while(<>){
#do something !
}
這是我最喜歡的一個程序模板,讀取文件,根據須要處理文件,而後輸出。
須要實現很是多的功能,而後就能夠本身總結腳本技巧,也能徹底掌握perl的各類語法。
在生物信息學領域,須要實現的功能有!
 

perl 單行命令shell

我我的特別喜歡這個知識點,我也專門下載過一本書來學習,把這個教程看完就基本上能全明白: http://www.catonmat.net/blog/perl-one-liners-explained-part-one/
學習單行命令的前提是掌握很是多的奇奇怪怪的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知識
GD and GD::Graph 能夠用來畫圖,可是基本上沒有人用了,除了CIRCOS畫圈圈圖火起來了。
TK模塊,能夠編寫GUI界面程序,可是也幾乎沒有人用了。
XML/pdf/excel/Json 相關的模塊能夠用來讀取非文本格式數據,或者輸出格式化報告。
socket通訊相關,高手甚至能夠寫出一個QQ的模仿版本
最後不得不提的就是Bioperl了,雖然我歷來沒有用過,可是它的確對初學者很是有用,大多數人不提倡重複造輪子,但我我的以爲,對初學者來講,重複造輪子是一個很是好的學習方式。你們能夠仿造bioperl裏面的各個功能,用本身的腳原本實現!
 

若是你感受學的差很少了,就能夠下載一些複習資料,查漏補缺:網絡

相關文章
相關標籤/搜索