• Publicidad

Leyendo números de línea de un archivo de texto

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

Leyendo números de línea de un archivo de texto

Notapor erv-Z » 2009-09-09 12:55 @580

Buenas a todos.

Tengo una pequeña duda: no sé cómo hago para leer el número de línea de un archivo de texto. Lo único que me puedo imaginar es que se podría hacer con for().

Saludos.
Última edición por explorer el 2009-09-09 13:14 @593, editado 2 veces en total
Razón: Ortografía, corrección del título
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Publicidad

Re: [Duda] Leiendo numeros de linea de un archivo de texto

Notapor explorer » 2009-09-09 13:06 @587

Sí, se podría hacer con for(). Y con while(), a medida de que vas leyendo el fichero.

También lo puedes saber leyendo el contenido de la variable especial $..

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (<$fichero>) {
    print "Línea: $. => $_\n";
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Más información en perlvar.

Hay más formas de hacerlo, claro.
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: Leyendo números de línea de un archivo de texto

Notapor erv-Z » 2009-09-09 13:17 @595

No entendí mucho el código.
Última edición por explorer el 2009-09-09 13:26 @601, editado 1 vez en total
Razón: Ortografía, anglicismos
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Re: Leyendo números de línea de un archivo de texto

Notapor explorer » 2009-09-09 13:27 @602

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (<$fichero>) {           # Vamos leyendo línea a línea del $fichero abierto antes
    print "Línea: $. => $_\n"; # Imprimimos qué número de línea es y la propia línea
}
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

Re: Leyendo números de línea de un archivo de texto

Notapor erv-Z » 2009-09-09 13:32 @605

oka, a mi no me funciona; mira cómo tengo mi código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open(GOL,"ar.txt") || die "Archivo no encontrado";
  2. @gol=<GOL>;
  3. close (GOL);
  4.  
  5. foreach $gol(@gol) {
  6.     chomp($gol);
  7.     while (<$gol>) {                  # Vamos leyendo línea a línea del $fichero abierto antes
  8.         print "Línea: $gol. => $_\n"; # Imprimimos qué número de línea es y la propia línea
  9.     }
  10. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2009-09-09 14:03 @627, editado 2 veces en total
Razón: Ortografía, anglicismos, sintaxis, bloques de código
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Re: Leyendo números de línea de un archivo de texto

Notapor explorer » 2009-09-09 14:01 @626

Vaya código más terrible... ¿pero tú sabes lo que has escrito? :shock:

Analicemos:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open(GOL, "ar.txt")                    # Abrir el fichero
    || die "Archivo no encontrado";
@gol = <GOL>;                          # Lo leemos entero, a un arreglo
close GOL;

foreach $gol (@gol) {                  # Para cada línea leída
    chomp($gol);                       # Le quitamos el carácter de fin de línea

    while (<$gol>) {                   # Leemos una línea de un fichero asociado a $gol...
                                       #   es decir: intentamos usar una línea del fichero ($gol)
                                       #   como descriptor de fichero => ERROR
         print "Línea: $gol. => $_\n"; # Imprimimos la línea y la línea leída del fichero fantasma => ERROR
    }
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡Qué horrible! :cry:

Yo supongo que querrías haber hecho esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open GOL, "ar.txt"                     # Abrir el fichero
    or die "Archivo no encontrado";
while (<GOL>) {                        # Leemos una línea del fichero (y se guarda en $_)
    chomp;                             # Quitamos el retorno de carro (de $_)
    print "Línea: $. => $_\n";         # Imprimimos número de línea y la propia línea
}
close GOL;
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

Re: Leyendo números de línea de un archivo de texto

Notapor erv-Z » 2009-09-09 14:04 @628

Gracias, me resultó.
Última edición por explorer el 2009-09-09 14:08 @630, editado 1 vez en total
Razón: Ortografía
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Re: Leyendo números de línea de un archivo de texto

Notapor erv-Z » 2009-09-09 14:13 @634

Me resultó, pero me surgió un pequeñísimo problema, pues es que trataba de hacerlo con una variable, en vez de la variable especial GOL y no pude.
Última edición por explorer el 2009-09-09 15:26 @684, editado 1 vez en total
Razón: Ortografía, sintaxis, esto es un foro no un teléfono móvil
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Re: Leyendo números de línea de un archivo de texto

Notapor explorer » 2009-09-09 15:31 @688

GOL no es una variable especial, es un descriptor o manipulador (handle) de fichero.

Lo que sí puedes hacer es cambiar GOL por una variable que realice la misma función:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open my $gol, "ar.txt" or die "Archivo no encontrado";
while (<$gol>) {
    chomp;
    print "Línea: $. => $_\n";
}
close $gol;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Pero, ¡ojo!: $gol NO almacena la línea que estás leyendo. Es un descriptor de fichero, y solo eso.

Si quieres guardar la línea en otra variable aparte de en $_, puedes hacer:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open my $gol, "ar.txt" or die "Archivo no encontrado";
while (my $linea = <$gol>) {
    chomp $linea;
    print "Línea: $. => $linea\n";
}
close $gol;
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

Re: Leyendo números de línea de un archivo de texto

Notapor erv-Z » 2009-09-09 15:57 @706

oka, thanks, ahora entendí mejor.
Última edición por explorer el 2009-09-09 16:04 @711, editado 1 vez en total
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583


Volver a Básico

¿Quién está conectado?

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

cron