我想使用perl从数组中提取30个字符的子串,使用另一个由索引组成的数组,我想从每行开始子串。例如,第1行从第21位开始提取30个字符,从第5行开始提取第2行,第3行......等等这可能吗?我知道使用固定索引很容易,但我从未尝试过使用存储在单独数组中的索引。 非常感谢。
例如,在我的情况下,数组1将包含字符串:
ATGTCAAATCCAGAAAGCTTGAAAAAACAGGTTGAACCTCCTGGTTACAATGAGTTATTTATGGTGGAAGATGTTTGTAATGTGGACCTAGAGCAGGGACT
TGATTTGTGTAAGCCTGAAAAGGTAAACAAACAATCTCAACGATCTCGACAATCCCGACAATCCCTCTTTACCAACACCATTAAGCCTCAAAAAGACAAGA
TGAATATTAAAACAAATAAAATAAAAGAGTTTTTAAATGACCTTTTTACTGAATTTTCTAAATTCCACAATAGCTATTATCCTAATGGAAGAATTTCTACT
CAGGACAAATCTCGATGGGTCTTGCTTATTATTTGGTCTATTATCACTATTTTAACAATAGACAAGAAATTTAAAATAAAAGAGTCATATTTAGAATGGAT
AGGTGAAAATCAGTCCCACAGTGAAATTTGGGGGCCTATTGTTATTTATGTTGGCTTATTCATACTCTTATTGTCTGCTTTTAACTGTACGTTTCCTTCAC
并且数组二包含索引,我想从每个30个字符串子串中提取,例如
21
32
15
7
17
留下输出:
AAAAAACAGGTTGAACCTCCTGGTTACAAT
AATCTCAACGATCTCGACAATCCCGACAAT
ATAAAATAAAAGAGTTTTTAAATGACCTTT
AATCTCGATGGGTCTTGCTTATTATTTGGT
CAGTGAAATTTGGGGGCCTATTGTTATTTA
答案 0 :(得分:2)
让我们假设我们有一个字符串和一个偏移量:
my $string = "ATGTCAAATCCAGAAAGCTTGAAAAAACAGGTTGAACCTCCTGGTTACAATGAGTTATTTATGGTGGAAGATGTTTGTAATGTGGACCTAGAGCAGGGACT";
my $offset = 21;
my $length = 30;
然后我们可以获得所需的子字符串,如
substr $string, $offset, $length;
但是如果我们有一个数组@strings
和一个相应的数组@offsets
,那么对于 i -th元素我们有:
substr $strings[$i], $offsets[$i], $length;
当我们遍历数组的所有索引(0 .. $#strings
)时,我们可以得到每个子字符串。