Suponiendo que tenemos una secuencia de bases en una string:
$a="ATTCCTGATGCGACCCCT";
Puede ser útil utilizar la función length(), que devuelve el tamaño de un string.
1.- Decir cuántas veces aparece la tripleta CCT (estas 3 bases o letras) (en este caso, 2).
Algo mas o menos asi te podria servir...
my $arreglo = "ATTCCTGATGCGACCCCT";
my @a = split(//, $arreglo); my $contador = 0;
for ( my $numero = 0 ; $numero < length(@a); $numero++ ) {
if ( $a[$numero] . $a[$numero] . $a[$numero] =~ /CCT/ ) {
$contador = $contador+1;
}
}
print "Existen " . $contador . " Juegos de CCT\n";
2.- Contar cuántas bases hay de cada tipo. Utilizar un hash. Al final debéis mostrar cada base y su número de apariciones (en este caso A:3 T:5 C:7 G:3).
Conste que no utilizo 'hash' en el siguiente ejemplo, sino un arreglo...
my @a = split(//, $arreglo); my ($contador1, $contador2, $contador3, $contador4);
for (my $numero = 0; $numero < length($arreglo); $numero++) {
if ( $a[$numero] =~ /A/ ) {
$contador1 = $contador1+1;
} elsif ( $a[$numero] =~ /T/ ) {
$contador2 = $contador2+1;
} elsif ( $a[$numero] =~ /C/ ) {
$contador3 = $contador3+1;
}
}
printf("Existe %i:A\n", $contador1); printf("Existe %i:T\n", $contador2); printf("Existe %i:C\n", $contador3);
Son ejemplos funcionales, si quieres usar hash deberas crear primero el indice de referencia al valor o sea:
my %variable = 'a' => 5
Asi cuando llames a $variable{a} obtendras el valor 5.... (Lo hice en un arreglo a proposito... ya que te piden hash en el segundo ejercicio, lo posteado por mi es un ejemplo que te serviria de guia).