初心者用Perl特訓講座 第二回

初心者用Perl特訓講座
第二回
前回の復習
配列とハッシュの操作
[配列]
push, pop, shift, unshift
split
文字列 → 配列
join
配列
→ 文字列
[ハッシュ]
エントリー作成:
$hash{key} = value;
要素抽出:
keys, values, each
本日のテーマ
ACGTGATGTCGTAGTCGATGCTAG….
という塩基配列があったとして
①各文字の文字数を知りたい
→カウント法
②あるパターンの文字列を含むか知りたい
→マッチング,正規表現
カウント法 その一
置換演算子を用いる
置換演算子
[文字列] =~ tr/abc/xyz/;
a → x
b → y
c → z
-----------------------------$seq = ggggcccc;
$seq =~ tr/ac/tg/;
print “$seq\n”;
置換演算子
• もう一つの機能…置換した回数をカウント
$count = [文字列] =~ tr/abc/xyz/;
置換した回数が入る
カウント法 その二
ハッシュを用いる方法
正規表現
正規表現
• ようするに文字の拡張
• あくまでも“あいまいな表現”ではなく,表現法の厳
密な拡張
AはAを意味する文字
[AB]はAかBを意味する文字
[^A]はA以外を意味する文字
.は全ての文字を意味する文字
という具合
量指定子
A{1,3}
→A, AA, AAAのどれか
B A{1,3} → BA, BAA, BAAAのどれか
B A{1,3}D → BAD, BAAD, BAAADのどれか
A{1, }
A{, 5}
A{3}
→ A, AA, AAA,・・・のどれか
→ ・・・, AAAAAのどれか
→AAAのみ
量指定子
+
→ {1, }
*
→ {0, }
<例> Ba*d → Bd,Bad,Baad,・・・
?
→ {0,1}
<例> Ba?d → Bd,Bad
本日の宿題
次に含まれる塩基の頻度と暗号を解読するプ
ログラムを作りなさい
cgtagctgactgctgatcgatgctagctgatgcgtgagAA
AGCTGATGCCATTACTGCAAGTAGTGAAA
TTCATGCCCCCCCATACgtcgatcgatcgtagct
gatcgatgtcgagtctagt
・ヒントはコドン表です。
・プログラムの中に正規表現とハッシュを利用し
て下さい。