在perl腳本中,我需要替換多個字符串。目前,我使用:Perl以不同的方式替換每個出現
$fasta =~ s/\>[^_]+_([^\/]+)[^\n]+/\>$1/g;
目的是在FASTA文件中格式化每個序列名稱。它適用於我的情況,所以我不需要觸摸這部分。但是,恰巧在文件中多次出現序列名稱。我不能在最後兩次 - 或更多 - 相同的序列名稱。因此,我需要有例如:
seqName1
seqName2
etc.
(而不是seqname的,seqname的,等等)
這是可能以某種方式處理不同的自動每次出現?我不知道有多少序列,如果有相似的名字,等等。一個想法是在每次出現時連接一個隨機字符串,因此我的問題。
非常感謝。
約翰完美解決它,chepner與聰明的主意有助於避免衝突,這裏是最後的結果:
$fasta =~ s/\>[^_]+_([^\/]+)[^\n]+/
sub {
return '>'.$1.$i++;
}->();
/eg;
很多很多的感謝。
檢查Perl是否允許您傳遞函數來處理替換。 – nhahtdh 2012-08-02 15:02:46
我徒然試圖在正則表達式中添加一個「rand(999)」。正則表達式中的文本被視爲文本,而不是代碼。 – Johy 2012-08-02 15:05:08