my (@keys)= keys %DNA_sequence_count; foreach my $key (@keys) { for ($i=$sequencelength-1; $i; --$i) { $DNA_sequence_count{substr($key, 0, $i}+= $DNA_sequence_count{$key}; } } # correction again thanks to ikegami! for ($i=$sequencelength-1; $i; --$i) { # second correction thanks to sauoq for ($j=$i; $j<$sequencelength; ++$j) { ++$DNA_sequence_count{substr($allbuffered, -$j, $i)}; } }