my $line ='atgcatccctttaat'; my @trips; my $frame; for (unpack('a3X2' x (length($line)-2), $line)) { push @{$trips[$frame++]}, $_; $frame %= 3; } use Data::Dumper; print Dumper \@trips;