- Código: Seleccionar todo
#!/usr/bin/perl -l
use warnings;
use strict;
my %almacen;
my @almacen;
my @bases = qw( A T C G );
my @lista = qw( AN ACGNGTCNACGCGT );
foreach my $secuencia ( @lista ) {
print "$secuencia<=";
expande_secuencia( "", $secuencia );
}
sub expande_secuencia {
# Dada dos partes de la secuencia,
# La primera no contiene ninguna N.
# Si la segunda no contiene N, la pintamos.
# Si sí tiene, divide la segunda en partes, combina y repite.
my ( $primera, $segunda ) = @_;
if ( $segunda =~ /N/ ) {
my ($media, $resto) = split('N',$segunda,2);
foreach my $base ( @bases ) {
expande_secuencia( $primera . $media . $base, $resto);
}
} else {
my $secuencia = "$primera$segunda";
print $secuencia; # Sacarlo a pantalla
$almacen{$secuencia} = 1; # Guardarlo en un hash
push @almacen, $secuencia; # Guardarlo en un array
}
}
- Código: Seleccionar todo
AN<=
AA
AT
AC
AG
ACGNGTCNACGCGT<=
ACGAGTCAACGCGT
ACGAGTCTACGCGT
ACGAGTCCACGCGT
ACGAGTCGACGCGT
ACGTGTCAACGCGT
ACGTGTCTACGCGT
ACGTGTCCACGCGT
ACGTGTCGACGCGT
ACGCGTCAACGCGT
ACGCGTCTACGCGT
ACGCGTCCACGCGT
ACGCGTCGACGCGT
ACGGGTCAACGCGT
ACGGGTCTACGCGT
ACGGGTCCACGCGT
ACGGGTCGACGCGT
Lo que no entiendo es porqué quieres guardarlo como hash. Parece que es un array lo que quieres obtener.