#

# Ejercicio 6. Leer 3 cadenas y contar con una funcion, cuantas bases de cada tipo existen

#

use strict;

print "Introduzca tres cadenas de adn \n";

my $adn1=<STDIN>;

chomp $adn1;

my $adn2=<STDIN>;

chomp $adn2;

my $adn3=<STDIN>;

chomp $adn3;

my @adn1 = split('',$adn1);

my @adn2 = split('',$adn2);

my @adn3 = split('',$adn3);

my %num = ();

 

numero_de_bases(\@adn1, \@adn2, \@adn3, \%num);

 

print "El resultado de contar las bases de las tres cadenas \n cadena1=$adn1 \n cadena2=$adn2 \n cadena3=$adn3 \n es:\n As= $num{'a'}\n Cs=$num{'c'}\n Gs=$num{'g'},\n Ts=$num{'t'}\n";

 

exit;

 

#

# Subrutina que une las tres cadenas en una sola cadena de caracteres

#

sub numero_de_bases {

      my($array1,$array2,$array3,$resul) = @_;

     

      my $cadena_total='';

      my $i;

 

      for ( $i=0; $i< scalar @$array1; $i++) {

            $cadena_total = $cadena_total.$$array1[$i];

            }

      for ( $i=0; $i< scalar @$array2; $i++) {

            $cadena_total = $cadena_total.$$array2[$i];

            }

      for ($i=0; $i< scalar @$array3; $i++) {

            $cadena_total = $cadena_total.$$array3[$i];

            }

 

      print "La cadena unida es: $cadena_total\n";

 

my %cuentas = ();

 

      cuenta(\$cadena_total,\%cuentas);

 

%$resul=%cuentas;

}

 

sub cuenta {

      my ($i, $j) = @_;

 

      my $k;

      my @adn =split('', $$i);

      for ($k= 0; $k<scalar @adn; $k++) {

            if ($adn[$k] eq 'a') {

                  $$j{'a'}++;

            }

            elsif($adn[$k] eq 'c') {

                  $$j{'c'}++;

            }

            elsif($adn[$k] eq 'g') {

                  $$j{'g'}++;

            }

            else {

                  $$j{'t'}++;

            }

      }

}