生信程式設計Perl教案大綱

2021-09-25 12:51:18 字數 3806 閱讀 2967

1.1. 認識perl(了解)

perl: practical extraction and report language (實用報表提取語言)

由 larry wall 在2023年創造,以實用、快速為開發目標,由於其靈活性被稱為指令碼語言的瑞士軍刀。

perl的理念:there』s more than one way to do it. (不知一種方法來做一件事) python 的理念:there』s only one way to do it.

perl發展史

perl的優缺點

優點: 語法簡單容易自由靈活; 執行速度快,perl直譯器直接對源**程式解釋執行; 免費開源; 正規表示式強大; 寫小指令碼處理文字資料方便,單行命令替代sed、awk;

缺點: 內建變數符不易記憶; 底層社群不活躍; 優秀模組少; 可讀性低,不適合寫大程式及團隊合作;

perl的應用場景

文字處理:工程領域資料處理、生物學資料處理

web**:如yahoo、amazon,web頁面也是文字檔案,perl有tcp/ip通訊能力

資料庫處理:perl語言有大量的拓展可以用來直接與各種主流資料庫進行通訊

郵件處理和ftp功能自動化

作圖只有想不到的,沒有perl做不到的。

1.2. 第乙個perl程式

2: 在命令列敲入vi test pl

3:編寫程式

i 進入插入模式;

#! /usr/bin/perl

use warnings;

use strict;

print "biotrainee com

按esc 後,輸入:x 指令,再按enter即可退出

4: 執行程式

直接./test.pl或者perl test pl

notepad++ (windows)

1:編寫程式

2:執行程式

在程式所在資料夾處執行,同vi的程式執行方法。

單行命令(linux/windows)

練一練:編寫乙個程式,輸出biotrainee com

1.3. 良好的程式設計習慣

使用內建警告資訊

在執行時,加上-w命令列 perl -w my_program.pl

程式中加上-w命令列 #/usr/bin/perl -w

對於perl5.6以後的版本,還可以通過warnings指令開啟

#!/usr/bin/perl

use warnings;

若要檢視更詳細的問題描述,在程式中加入:use diagnostics;

一般寫程式,同時加上:

#!/usr/bin/perl

use strict;

use warnings;

my $usage=qq' at position 47: … acc2geneid.txt}̲; die "usage\n" if scalar @ar**!=3;

my(que

ryco

ver,

query_cover,

queryc

​ove

r,acc2geneid_db,acc

2gen

eid)

=@ar

gv;o

peni

nput

1,

"acc2geneid)=@ar**; open input1,"

acc2ge

neid

)=@a

r**;

open

inpu

t1,"

query_cover";

open input2,「acc

2gen

eidd

b";o

peno

utpu

t,

">

acc2geneid_db"; open output,">

acc2ge

neid

d​b"

;ope

nout

put,

">

acc2geneid」;

my (@sub,%geneid2acc);

while()', got 'eof' at end of input: geneid2acc=katex parse error: expected 'eof', got '}' at position 9: sub[0]; }̲ while(…

);if(exists(katex parse error: expected '}', got 'eof' at end of input: geneid2acc))\n";}}

#!/usr/bin/perl

use strict;

use warnings;

my $usage=qq' at position 47: … acc2geneid.txt}̲; die "usage\n" if scalar @ar**!=3;

my(que

ryco

ver,

query_cover,

queryc

​ove

r,acc2geneid_db,$acc2geneid)=@ar**;

open input1,「que

ryco

ver"

;ope

ninp

ut2,

"query_cover"; open input2,"

queryc

​ove

r";o

peni

nput

2,"acc2geneid_db」;

open output,">$acc2geneid";

my (@sub,%geneid2acc);

while()', got 'eof' at end of input: geneid2acc=$sub[0];

}while()))', got 'eof' at end of input: geneid2acc{

變數的定義

變數的型別

特殊變數

$_ 預設變數

$0 程式名稱

$. 當前控制代碼當前行號

@ ar** 命令列引數

1.5. 標示符和關鍵字

標示符標示符的規則

關鍵字1.6. 輸出和輸入

1.7. 運算子

1.8. 比較、關係運算子

比較運算子

邏輯運算子

1.9. 作業

判斷語句和迴圈語句-30min

2.1. 判斷語句介紹

2.2. if-else/elseif/if巢狀

2.3. 迴圈語句介紹

2.4. while迴圈/while迴圈的巢狀

2.5. for迴圈

2.6. break和continue

2.7 總結

2.8 作業

標量、陣列、雜湊-30min

3.1. 標量

3.2. 陣列

3.3. 雜湊

函式-30min

常用內建函式(標量和字串函式/陣列函式/雜湊函式/list函式)

子函式(使用者自定義函式)

5. 檔案操作、綜合應用-15min

5.1. 檔案操作介紹

5.2. 檔案的開啟與關閉

5.3. 檔案的讀寫

5.4. 應用

5.5. 作業

目錄操作-15min

包、模組安裝和使用-5min

正規表示式-10min

單行命令-10min

面對物件/資料庫連線(了解)-5min

常用**整理

實戰練習題(10題)

實習生帶教

在半年前,部門新進了一位實習生,領導安排讓我帶,當時我並不想帶並向領導表達了意願,但在領導的要求下還是接受了。我當時的想法是 我沒有義務,也沒有責任帶你,你要是有事問,我當然後認真解答,但我可能不會主動做什麼。沒想到轉眼半年過去了,實習生交來了實習小結讓帶教老師評價簽名,遺憾的是在半年中我們也沒說過...

生信基礎(二) 生信學習資料

原創 hxj7 上次談到生信人員需要熟練掌握一些程式語言,還講了perl和python的選擇問題。那麼,如果已經選定了一門程式語言,到底該如何學習它呢?今天的我們可以通過mooc跟著名師學習或者上知乎提問,幸運的話還能得到大牛指點。不過,在我剛接觸程式設計的時候,mooc和知乎都還未興起,所以我都是...

常見生信操作

安裝samtools conda install samtools srand 隨機數發生器。設定固定的種子,保證每次出來的結果一致 rand 返回 0,1 之間的隨機數,包含0不包含1 1.產生隨機的基因組檔案 echo 1 awk v seed 1 v label chr v chrnum 4 ...