atgactaatagcagtgg #### 0 'atg' 1 'act' 2 'aat' 3 'agc' 4 'agt' 5 'gg' #### @codons = grep $_, split /(.{3})/, 'atgactaatagcagtgg'; print "@codons\n"; __END__ atg act aat agc agt gg #### @codons0 = split /(?:.{3})/, 'atgactaatagcagtgg'; # disable capture with ?: @codons1 = split /.{3}/, 'atgactaatagcagtgg'; # no parens { local $,=':'; print "@codons0\n@codons1\n"; } __END__ ::::::gg ::::::gg #### @codons = 'atgactaatagcagtgg' =~ /.{1,3}/g; print "@codons\n"; __END__ atg act aat agc agt gg #### @codons = 'atgactaatagcagtgg' =~ /.{3}/g; print "@codons\n"; __END__ atg act aat agc agt #### @parts = '12abc3ef' =~ /[a-z]+|\d+/g; print "@parts\n"; __END__ 12 abc 3 ef #### @parts = grep $_, split /([a-z]+|\d+)/, '12abc3ef'; #### @parts = split /(?<=[a-z])(?=\d)|(?<=\d)(?=[a-z])/, '12abc3ef'; #### 0 'aaa' 1 'bb' 2 'c' 3 'dddd' 4 'a' 5 'ee' #### @runs = do { my $i; grep ++$i%2, 'aaabbcddddaee' =~ /((.)\2*)/g }; print "@runs\n"; __END__ aaa bb c dddd a ee