2013-07-12 86 views
0

我想使用Perl從數組中提取30個字符的子串,使用另一個由索引組成的數組,其中我希望每行的子串都開始。例如,第1行從位置21開始提取30個字符,第2行從5開始,第3行...等等。這可能嗎?我知道它很容易做一個固定的索引,但我從來沒有嘗試過使用索引存儲在一個單獨的數組。 非常感謝。使用索引從Perl中的數組中提取子串

例如,陣列1將包括在我的案件字符串實例:

ATGTCAAATCCAGAAAGCTTGAAAAAACAGGTTGAACCTCCTGGTTACAATGAGTTATTTATGGTGGAAGATGTTTGTAATGTGGACCTAGAGCAGGGACT 
TGATTTGTGTAAGCCTGAAAAGGTAAACAAACAATCTCAACGATCTCGACAATCCCGACAATCCCTCTTTACCAACACCATTAAGCCTCAAAAAGACAAGA 
TGAATATTAAAACAAATAAAATAAAAGAGTTTTTAAATGACCTTTTTACTGAATTTTCTAAATTCCACAATAGCTATTATCCTAATGGAAGAATTTCTACT 
CAGGACAAATCTCGATGGGTCTTGCTTATTATTTGGTCTATTATCACTATTTTAACAATAGACAAGAAATTTAAAATAAAAGAGTCATATTTAGAATGGAT 
AGGTGAAAATCAGTCCCACAGTGAAATTTGGGGGCCTATTGTTATTTATGTTGGCTTATTCATACTCTTATTGTCTGCTTTTAACTGTACGTTTCCTTCAC 

而且陣列中的兩個組成,我要開始新的30字符字符串我從這些提取物作爲

21 
32 
15 
7 
17 
指數

離開的輸出:

AAAAAACAGGTTGAACCTCCTGGTTACAAT 
AATCTCAACGATCTCGACAATCCCGACAAT 
ATAAAATAAAAGAGTTTTTAAATGACCTTT 
AATCTCGATGGGTCTTGCTTATTATTTGGT 
CAGTGAAATTTGGGGGCCTATTGTTATTTA 
+1

我不太確定我瞭解你。你能否展示你嘗試過的代碼,但沒有按預期工作?實際示例數據(而不是此數據的說明)加上預期的輸出也會有所幫助。 – amon

回答

2

讓我們假設我們有一個字符串和偏移:

my $string = "ATGTCAAATCCAGAAAGCTTGAAAAAACAGGTTGAACCTCCTGGTTACAATGAGTTATTTATGGTGGAAGATGTTTGTAATGTGGACCTAGAGCAGGGACT"; 
my $offset = 21; 
my $length = 30; 

然後我們就可以得到所需要的子像

substr $string, $offset, $length; 

但是,如果我們有一個數組@strings和相應的陣列@offsets,然後爲個元素有:

substr $strings[$i], $offsets[$i], $length; 

當我們遍歷數組的所有索引(0 .. $#strings)時,我們可以得到每個子串。