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
db"
;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 ...