• Publicidad

Problema con substr y array

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

Problema con substr y array

Notapor colorado » 2011-07-26 14:21 @639

Tengo las siguientes líneas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open( LISTA, './lista.txt' );
  2. @contenido = <LISTA>;
  3.  
  4. foreach my $linea (@contenido) {
  5.  
  6.     $linea =~ s/[\t\n]//g;
  7.  
  8.     @contenido = substr( $linea, 0, 250 );
  9.  
  10. }
  11.  
  12. print @contenido;
  13.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Bien, lo que quiero es:

primero limpiar el archivo lista.txt de saltos de línea. Lo consigo con esta línea: $linea =~ s/[\t\n]//g; pero después quería mostrar los primeros 250 bytes del archivo lista.txt pero el script solo trabaja sobre la primera línea del lista.txt.

¿Cómo puedo hacer que muestre los 250 primeros bytes?
colorado
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2010-01-31 14:48 @658

Publicidad

Re: Problema con substr y array

Notapor explorer » 2011-07-26 16:20 @722

La expresión regular también está quitando los tabuladores (\t). Cuidado.

La línea 8 no tiene sentido. Vuélvela a leer hasta que te des cuenta de lo que le estás diciendo a Perl :)

Una cosa es querer sacar los 250 primeros caracteres de todo el archivo y otra es sacar los 250 primeros caracteres de cada línea de todo el archivo.

En el segundo caso, solo tienes que imprimir el resultado del substr().

En el primer caso, te vale con unir todas las líneas de @contenido en un solo escalar (con join()), y luego aplicar el substr().
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: Problema con substr y array

Notapor colorado » 2011-07-26 17:02 @751

Muchas gracias, explorer.

Ahora lo veo mucho más claro.
Así me quedó:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open( LISTA, './lista.txt' );
  2. @contenido = <LISTA>;
  3.  
  4. foreach my $linea (@contenido) {
  5.  
  6.     $linea =~ s/[\t\n]//g;
  7.  
  8. }
  9.  
  10. my $string = join( "", @contenido );
  11. $str = substr( $string, 0, 250 );
  12.  
  13. print "$str";
  14.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Vaya lío que tenía :oops:
colorado
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2010-01-31 14:48 @658

Re: Problema con substr y array

Notapor explorer » 2011-07-26 17:26 @768

Esta es mi versión (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use 5.010;
  2. use File::Slurp;
  3.  
  4. my $archivo;
  5.  
  6. $archivo =  read_file('./lista.txt');
  7. $archivo =~ s/[\t\n]+//g;
  8. $archivo =  substr $archivo, 0, 250;
  9.  
  10. say $archivo;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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