Eliminación de caracteres de forma específica
Publicado: 2010-01-15 15:40 @694
¡¡Hola a todo el mundo!!
Soy principiante totalmente en el lenguaje Perl y estoy empezando gracias a una asignatura de bioinformática que tengo este cuatrimestre. Mis conocimientos me han permitido medio solucionar un problema que nos han propuesto. El problema en sí es el siguiente: partimos de un árbol filogenético expresado de la siguiente forma (por ejemplo):
(Mur: 0.98798,((((Ba3n: 0.77637,CA3: 0.24356),H: 0.99877),G: 0.77892),J: 0.99872),Gi: 0.88982);
El objetivo es eliminar las distancias de cada especie (los números como 0.77892 y el ":"), es decir, tengo que eliminar todos los números y los caracteres ':' y '.', dejando el árbol limpio del siguiente modo:
(MuR,((((Ba3n,CA3),H),G),O),Gi);
He conseguido eliminar todos los números y los caracteres ':' y '.' pero no sé cómo hacer para no eliminar los números que pertenecen a los nombres de las especies que han de permanecer y no ser eliminados (por ejemplo Ba3n y no obtener Ban).
Dejo aquí el programa que he ideado para que le echéis un vistazo y miréis si se puede solucionar.
¡¡¡MUCHAS GRACIAS!!!
Soy principiante totalmente en el lenguaje Perl y estoy empezando gracias a una asignatura de bioinformática que tengo este cuatrimestre. Mis conocimientos me han permitido medio solucionar un problema que nos han propuesto. El problema en sí es el siguiente: partimos de un árbol filogenético expresado de la siguiente forma (por ejemplo):
(Mur: 0.98798,((((Ba3n: 0.77637,CA3: 0.24356),H: 0.99877),G: 0.77892),J: 0.99872),Gi: 0.88982);
El objetivo es eliminar las distancias de cada especie (los números como 0.77892 y el ":"), es decir, tengo que eliminar todos los números y los caracteres ':' y '.', dejando el árbol limpio del siguiente modo:
(MuR,((((Ba3n,CA3),H),G),O),Gi);
He conseguido eliminar todos los números y los caracteres ':' y '.' pero no sé cómo hacer para no eliminar los números que pertenecen a los nombres de las especies que han de permanecer y no ser eliminados (por ejemplo Ba3n y no obtener Ban).
Dejo aquí el programa que he ideado para que le echéis un vistazo y miréis si se puede solucionar.
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- print 'Introduce la ruta del archivo',"\n";
- $file=<STDIN>;
- chomp $file;
- if (not(open(INFILE,$file))){
- while (not(open(INFILE,$file))){
- print "El archivo \"$file\" no puede encontrarse",', introduce una nueva ruta',"\n";
- $file=<STDIN>;
- chomp $file;}}
- @datos=<INFILE>;
- close INFILE;
- $datos= join( '', @datos);
- $datos=~ s/\d//g;
- $datos=~ s/\.//g;
- $datos=~ s/\://g;
- print $datos;
- exit;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
¡¡¡MUCHAS GRACIAS!!!