• Publicidad

Error al usar subsrt()

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Error al usar subsrt()

Notapor gonzalipto » 2011-04-18 19:59 @874

Amigos perleros,

Tengo el siguiente problema.. Estoy leyendo un archivo que tiene las siguientes características

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ATOM      1  N   GLU A 125      14.581  13.195   3.479  1.00 22.25           N  
ATOM      2  CA  GLU A 125      14.496  14.621   3.901  1.00 20.31           C  
ATOM      3  C   GLU B 126      14.969  14.841   5.327  1.00 19.84           C  
ATOM      4  O   GLU B 126      14.624  14.071   6.225  1.00 23.21           O  
ATOM      5  CB  GLU B 126      13.765  15.508   2.985  1.00 21.39           C  
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


La quinta columna es la que me interesa y tiene muchas repeticiones de letras en orden como A, B, C, D. Yo solo quiero que me quede una de cada repetición.

Entonces hice el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open( TEMP, "miarchivo" );
  2. my $salida = "Lista";
  3. open( SALIDA, ">$salida" )
  4.     || die "ERROR: No puedo abrir el fichero $salida\n";
  5.  
  6. my @temp_array = ();
  7. @temp_array = <TEMP>;
  8. close(TEMP);
  9.  
  10. my $aux = "O";
  11. foreach my $temp_line (@temp_array) {
  12.     if ( $temp_line =~ /^ATOM/ ) {
  13.  
  14.         my @temp_line2 = split( " ", $temp_line );
  15.         my $Chain_ID = $temp_line2[4];
  16.         $Chain_ID = substr( $Chain_ID, $Chain_ID, 1 )
  17.             ;                          #para quedarme solo con el primer valor de ese campo, o sea A, B, C,..., N
  18.         if ( $Chain_ID ne $aux ) {
  19.             print $Chain_ID. "\n";
  20.             $some_dir =~ s/pdb//g;
  21.             $some_dir =~ s/.ent//g;
  22.             print SALIDA $some_dir . "_" . $Chain_ID . "\n";
  23.         }
  24.         $aux = $Chain_ID;
  25.     }
  26.  
  27. }
  28.  
  29. close(SALIDA);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


El tema es que me da un error que dice lo siguiente:
Argument "A" isn't numeric in substr at ListMaker.pl line 22. Line 22 seria la línea que tiene el substr()
Argument "B" isn't numeric in substr at ListMaker.pl line 22.

¿Alguien tiene idea de por qué? ¿Se les ocurre una mejor idea de cómo hacer eso que intento hacer?

Gracias desde ya,

Gonzalo
gonzalipto
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2011-04-18 08:59 @416

Publicidad

Re: Error al usar subsrt()

Notapor explorer » 2011-04-18 20:46 @907

El segundo argumento de substr() debe ser la posición (un número) a partir del cuál se extrae la subcadena. El error sale porque lo que estás pasando es un string (un carácter, en este caso, $Chain_ID).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error al usar subsrt()

Notapor gonzalipto » 2011-04-19 12:25 @559

Muchas gracias, explorer, ¡sos un genio!
gonzalipto
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2011-04-18 08:59 @416

Re: Error al usar subsrt()

Notapor explorer » 2011-04-19 12:41 @570

Hummm... estoy sospechando que la línea 20 sobra...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron