• Publicidad

Extraer datos de fichero texto y meterlo en una matriz

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

Extraer datos de fichero texto y meterlo en una matriz

Notapor leinov » 2006-03-17 11:13 @509

Muy buenas, quiero hacer una cosa en Perl pero no doy con ello. Hay un mensaje un poco más abajo pero no hace exactamente lo que yo quiero.

Yo tengo un archivo de texto con nombres, todos separados por un salto de línea. Lo que quiero es leer el fichero desde Perl y meter todos estos datos en una matriz, para yo poder luego utilizarlos.

También me gustaría saber cómo puedo hacer para que a través de un bucle for, del 1 al 10 por ejemplo, me ejecute a medida que vaya incrementando hacer un print con el valor de la matriz, la posición de la matriz sería la del contador.

Gracias por todo, siento si esto es muy básico :oops:
leinov
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2006-03-17 11:08 @506

Publicidad

Notapor kidd » 2006-03-17 12:25 @559

Hola.

Bienvenido al foro, y no te preocupes, no hay pregunta demasiado básica para nosotros :wink:

Digamos que tienes un archivo con los siguientes datos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Alberto
Pepe
Juan
Uriel
Pedro
Joaquin
Gonzalo
Ezequiel
Pablo
Roberto
Jorge
Tomas
Jesus
Ruben
Juda
Daniel
Samuel
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Entonces, lo que vamos a hacer es leer el archivo, ordenar los nombres por alfabeto y mostrarlos por pedazos.

Primero abrimos el archivo y guardamos todo el contenido en un array ordenado de manera alfabética:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open my $file, '<', 'archivo_nombres.txt' or die("No se pudo abrir el archivo");
  2. my @nombres = sort <$file>;
  3. close $file;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Ya tenemos todos los nombres guardados en nuestro array @nombres. Ahora vamos a crear dos variables con los contadores:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $objetos_por_pagina = 10;
  2. my $contador_inicial = 0;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

La primera variable "$objetos_por_pagina" nos sirve para saber cuántos objetos debemos desplegar iniciando desde el "$contador_inicial". Por ejemplo, con los valores que tiene ahora, veríamos los nombres del 0 al 10.

Ya con eso ahora vamos a imprimir los nombres:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $num = $contador_inicial;
  2.  
  3. for ( $contador_inicial .. ( $contador_inicial + $objetos_por_pagina ) ) {
  4.     print "$num: $nombres[$num]\n";
  5.     $num++;
  6. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y listo, de manera sencilla abrimos el archivo con nombres y los desplegamos por partes.

El código completo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4.  
  5. open my $file, '<', 'archivo_nombres.txt' or die("No se pudo abrir el archivo");
  6. my @nombres = sort <$file>;
  7. close $file;
  8.  
  9. my $objetos_por_pagina = 10;
  10. my $contador_inicial   = 0;
  11.  
  12. my $num = $contador_inicial;
  13.  
  14. for ( $contador_inicial .. ( $contador_inicial + $objetos_por_pagina ) ) {
  15.     print "$num: $nombres[$num]\n";
  16.     $num++;
  17. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor leinov » 2006-03-17 14:06 @629

Joer, es perfecto, ¡muchísimas gracias por la ayuda!
leinov
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2006-03-17 11:08 @506


Volver a Básico

¿Quién está conectado?

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