在Perl中将字符串拆分为等长块

时间:2011-11-25 06:53:02

标签: perl split

假设我的长度为3的倍数。

my $seq = "CTTCGAATT"; # in this case length of 9

有没有办法可以将它分成3等长? 这样我最终得到了这个数组:

$VAR = ["CTT", "CGA", "ATT"];

4 个答案:

答案 0 :(得分:14)

How can I split a string into chunks of two characters each in Perl?

处查看解决方案

特别是unpack可能很有趣:

my @codons = unpack("(A3)*", $seq);

答案 1 :(得分:3)

使用substr迭代超过三的倍数,将push的碎片放入列表中。

答案 2 :(得分:2)

my $str = join '', map { ('A','T','C','G')[ rand 4 ] } 0 .. 900 ; # Random string

my @codons = $str =~ /[ACTG]{3}/g;   # Process in chunks of three
                                     # '/g' flag necessary

print 'Size of @codons array : ',
        scalar @codons;              # '300'

答案 3 :(得分:1)

my $str='ABCDEFGHIJKLM';

我们可以使用字符串匹配从字符串中获取部分,其中最小长度为1,最大长度为所需长度,即3或4或其他任何值

@parts = $str =~ /(.{1,4})/g;,我们得到@parts = ['ABCD', 'EFGH', 'IJKL', 'M']