• Publicidad

imprimir la primera línea en una búsqueda

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

imprimir la primera línea en una búsqueda

Notapor colorado » 2011-05-15 17:02 @751

Tengo las siguientes líneas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open(PASS, "<   archivo.txt");
  2. my @contenido = <PASS>;
  3. foreach my $linea (@contenido)
  4. {
  5. if($linea =~ m/amigos de perl/)
  6. {
  7. print $linea;
  8. }
  9. }
  10. close(PASS);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


archivo.txt

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
referencia archivo.txt

hola
amigos de perl
en español
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


salida por pantalla:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
amigos de perl
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4



Lo que necesito es que si el script encuentra la cadena de búsqueda, en vez de imprimir la línea en la que está contenida esa cadena, imprima la primera línea, para que la salida por pantalla sea:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
referencia archivo.txt
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
colorado
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2010-01-31 14:48 @658

Publicidad

Re: imprimir la primera linea en una busqueda

Notapor ileiva » 2011-05-15 17:19 @763

Hola.

Yo lo haría usando dos flags:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3.  
  4. my $primera_linea;
  5. my $flag_linea = 0;
  6. my $flag_encontrado = 0;
  7.  
  8. open(PASS, "<   archivo.txt");
  9. my @contenido = <PASS>;
  10. foreach my $linea (@contenido) {
  11.     if(!$flag_linea) {  # saber si es la primera linea
  12.         $primera_linea = $linea;
  13.         $flag_linea = 1;
  14.     }
  15.     if($linea =~ m/amigos de perl/) {
  16.         $flag_encontrado = 1;  # se ha encontrado lo que se busca
  17.         last;
  18.     }
  19. }
  20. close(PASS);
  21.  
  22. if($flag_encontrado) {
  23.      print $primera_linea;
  24. }
  25.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos.
Avatar de Usuario
ileiva
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2011-04-23 03:25 @184
Ubicación: Santiago, Chile

Re: imprimir la primera línea en una búsqueda

Notapor explorer » 2011-05-15 18:05 @795

Esta es mi versión:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use Modern::Perl;                       # somos modernos
  3. use File::Slurp;                        # leer ficheros
  4.  
  5. my @fichero = read_file('archivo.txt'); # leemos el fichero
  6.  
  7. my $primera = shift @fichero;           # primera línea
  8.  
  9.                                         # condición
  10. print $primera if /amigos de perl/ ~~ @fichero;
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: imprimir la primera línea en una búsqueda

Notapor colorado » 2011-05-16 09:38 @443

:D Muchas gracias a los dos, genial, problema resuelto.
colorado
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2010-01-31 14:48 @658


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron