print "Introduzca el nombre del archivo que contiene la secuencia a analizar: ";
$secuencia = <STDIN>;
chomp $secuencia;
# abrir el archivo
unless(open(ARCHIVOSECUENCIA,$secuencia)){
print "No podemos abrir ese archivo. Recuerde que debe ser del tipo *.txt!! \n\n";
exit;
}
# leer el archivo con un array
@SECUENCIA = <ARCHIVOSECUENCIA>;
chomp @SECUENCIA;
close ARCHIVOSECUENCIA;
# pasar dicho array a single String para remove newline and white space
$SECUENCIA = join('',@SECUENCIA);
#$SECUENCIA =~s/\s//g;
# volver a pasar este Single String a Array donde cada caracter sea un elemente en el array
#@SECUENCIA= split('',$SECUENCIA);
#PASAMOS A DETERMINAR EL PATRÓN A BUSCAR
print "\n\n";
print "¿Qué patrón quieres buscar?";
my $patron=<STDIN>;
chomp $patron;
$patron=~s/\s//g; #removemos los espacio en blanco
#cortamos la secuencia por en cada punto donde existe el patrón buscado
print "imprimo el valor de patrón:", "$patron","\n\n";
print "ESTOS SON LOS FRAGMENTOS CORTADOS SEGÚN EL PATRON \n\n";
#------------------------------------------------
#--------------------------------------------------
my @conjunto=split $patron,$SECUENCIA; #metemos la secuencia del String en un array donde cada elemento es un corte según el patrón
shift(@conjunto); #eliminamos el primer trozo para que no interfiera en el cálculo
#unshift(@conjunto,$patron);
$numero_elementos=scalar(@conjunto);
# Crear CUATRO contadores para los diferentes estados que puede tener S,B,I,Error
$S_count = 0;
$B_count = 0;
$I_count = 0;
$error_count = 0;
foreach $elemento(@conjunto){ #bucle que recorre toda la secuencia contenida en el array @conjunto
$elemento=$elemento.$patron; # al realizar el corte, la secuencia queda cortada y se elimina el patrón de corte. Con esta
# línea volvemos a pegar el patrón al final del fragmento cortado para que la secuencia sea fiel a la original
if (length($elemento)<1) { # Si al realizar el corte hay dos patrones consecutivos son eliminados y el fragmento queda vacío, en ese caso
# decimos que ese fragmento vacío es el patrón
$elemento=$patron
};
print $elemento;
$primer_elemento=substr($elemento,0,1);
print " el primer elemento es: ", $primer_elemento, "\n";
if ($primer_elemento eq 'S'){
++$S_count;
}elsif($primer_elemento eq 'B'){
++$B_count;
}elsif($primer_elemento eq 'I'){
++$I_count;
}else{
print "!!!!!!!Error - I don\'t recognize this base : $primer_elemento\n";
++$error_count;}
}
print "\n\n";
print "LOS RESULTADOS SON LOS SIGUIENTES:\n";
print"______________________________________\n\n";
print "Sube = $S_count\n";
print "Baja = $B_count\n";
print "Igual = $I_count\n";
print "\n\n";
print "SACAMOS LOS PORCENTAJES:\n";
print"_____________________________\n\n";
$total=$S_count+$B_count+$I_count;
if ($total==0) {
print "No se ha encontrado ninguna concordancia \n";
}else{
$porcentaje_B=((100*$B_count)/$total);
$porcentaje_S=((100*$S_count)/$total);
$porcentaje_I=((100*$I_count)/$total);
print " Porcentaje de B: ",$porcentaje_B, "%\n";
print " Porcentaje de S: ",$porcentaje_S, "%\n";
print " Porcentaje de I: ",$porcentaje_I, "%\n";
}
exit;