#EnumeraciĆ³n de motivos sub motifs { my $t =$_[0]; my $k = $_[1]; my @s =@{$_[2]};#Lista pasada por referencia my @secuencias = @{$_[3]}; my @motifs=(); for (my $i=0; $i< scalar @s; $i++) { my $indice =$s[$i]; my $secuencia =$secuencias[$i]; my $k_mero = substr ($secuencia,$indice,$k); push @motifs,$k_mero; } return @motifs; } sub profile{ my ($t,$k,@motifs) =@_; my %tabla =(); my @bases = ("A","C","G","T"); foreach my $base (@bases){ my @lista_ceros =(); for (my $i =0; $i<$k;$i++){ push @lista_ceros,0; } $tabla{$base} = \@lista_ceros; } return %tabla; #LO primero que tengo que hacer es inicializar la tabla, un buen punto de partida es poner ocho ceros #declarar una tabla con ocho ceros } my $t1 = 5; my $k1 = 8; my @s1 =(6,20,23,10,11); my @secuencias1 = ( "CGCCCCTCTCGGGGGTGTTCAGTAAACGGCCA", "GGGCGAGGTATGTGTAAGTGCCAAGGTGCCAG", "TAGTACCGAGACCGAAAGAAGTATACAGGCGT", "TAGATCAAGTTTCAGGTGCACGTCGGTGAACC", "AATCCACCAGCTCCACGTGCAATGTTGGCCTA", ); my @resultado1 = motifs($t1,$k1,\@s1,\@secuencias1); print join (" ", @resultado1, "\n"); my %tabla1 = profile($t1,$k1, @resultado1); foreach my $base (keys%tabla1){ my @lista = @{$tabla1{$base}};#Me quedo con una copia de la lista a la que referencia print "Base" ,$base," ",join(" ",@lista), "\n"; }