@words = @newwords; #### use warnings; use strict; my @words = kmers(3); sub kmers { my $k = shift; my @bases = qw( A T G C ); my @words = @bases; for my $i (1 .. $k - 1) { print "\nBEGIN \$i = $i:\n"; print " \@bases = @bases\n"; print " \@words = @words\n"; my @newwords; for my $w (@words) { push @newwords, $w.$_ for @bases; } @words = @newwords; print "END \$i = $i:\n"; print " \@bases = @bases\n"; print " \@words = @words\n"; } return @words; } #### 13:20 >perl 769_SoPW.pl BEGIN $i = 1: @bases = A T G C @words = A T G C END $i = 1: @bases = A T G C @words = AA AT AG AC TA TT TG TC GA GT GG GC CA CT CG CC BEGIN $i = 2: @bases = A T G C @words = AA AT AG AC TA TT TG TC GA GT GG GC CA CT CG CC END $i = 2: @bases = A T G C @words = AAA AAT AAG AAC ATA ATT ATG ATC AGA AGT AGG AGC ACA ACT ACG ACC TAA TAT TAG TAC TTA TTT TTG TTC TGA TGT TGG TGC TCA TCT TCG TCC GAA GAT GAG GAC GTA GTT GTG GTC GGA GGT GGG GGC GCA GCT GCG GCC CAA CAT CAG CAC CTA CTT CTG CTC CGA CGT CGG CGC CCA CCT CCG CCC 13:20 >