• Publicidad

Comparar string

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

Comparar string

Notapor animal collective » 2011-07-20 10:00 @458

Estimados,

Tengo el siguiente problema: deseo que mi programa busque un patrón dentro de un archivo de texto y me imprima la línea completa de este.

Necesito saber cómo puedo realizar la condición para que el texto que encuentre sea estricto. Ejemplo:

Deseo buscar el patrón “juan”.

El programa que realicé me traerá:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Hola_juan_asdf
juan
JuAn
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Yo solo necesito que imprima juan y no las líneas que contengan la palabra juan.

Muchas Gracias
Saludos

Adjunto código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $path = "/etc/nagios2/monitor/BES.cfg";
  2. open(DATOS,"/etc/nagios2/monitor/BES.cfg");
  3. while ($linea=<DATOS>)
  4. {
  5. if ($linea =~"hostgroup_name")
  6. {
  7. push (@cliente,$linea);
  8. }
  9.  
  10. if ($linea =~"host_name")
  11. {
  12. push (@host,$linea);
  13. }
  14. print "@cliente , @host";
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
animal collective
Perlero nuevo
Perlero nuevo
 
Mensajes: 39
Registrado: 2010-10-17 17:53 @786
Ubicación: Chile

Publicidad

Re: Comparar string

Notapor explorer » 2011-07-20 11:03 @502

Se suele pensar en expresiones regulares, cuando hablamos de buscar patrones, pero, en este caso, queremos buscar una cadena exacta. En ese caso es mejor usar el operador de comparación 'eq', que prueba la igualdad entre cadenas de caracteres.

Y, también, importante: si estamos leyendo líneas de un fichero de texto, hay que recordar que esa línea aún contiene el/los caracteres de fin de línea o retorno de carro.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my $path = "/etc/nagios2/monitor/BES.cfg";
  2.     open(DATOS, $path);
  3.  
  4.     while (my $linea=<DATOS>) {
  5.         chomp $linea;                       # quitamos el retorno de carro
  6.         if ($linea eq 'juan') {             # comparación
  7.             push @cliente, $linea;          # sí, la guardamos
  8.         }
  9.     }
  10.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Aunque... no tiene mucho sentido guardar todas las líneas iguales a la que buscamos: si son todas iguales, el contenido de @cliente será un montón de elementos todos iguales... ¿No será otra cosa lo que quieres guardar?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Comparar string

Notapor pvaldes » 2011-07-21 17:31 @771

>Aunque... no tiene mucho sentido guardar todas las líneas iguales a la que buscamos: si son todas iguales, el contenido de @cliente será un montón de elementos todos iguales...

Iba a decir lo mismo, si lo que quieres es contar las líneas que contienen juan hay formas más simples, por ejemplo usa grep() y manda el resultado a una variable de tipo escalar

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $numero = grep (/(J|j)uan/, <DATOS>);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580


Volver a Básico

¿Quién está conectado?

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

cron