• Publicidad

Duda sobre macheo

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Duda sobre macheo

Notapor cblancar » 2008-07-15 01:51 @118

Muy buenas,
Desde hace muy poquito me he puesto a aprender y a hacer cositas con Perl y me he encontrado con esta duda que os paso a explicar a continuación (a ver si soy capaz de escribirla)...

- Yo voy leyendo de un directorio una serie de ficheros de log.

- De esos ficheros me interesa coger cierta información por lo que decido hacer el famoso m// (adjunto macheo completo)

if (m/\"\[(\d{1,2}\/\w{1,3}\/\d{4}:\d{1,2}:\d{2}:\d{1,2}).*\]\".+nodeName\=([^\&]+).*\&mnn\=([^\&]+).+\&msisdn\=([^\&]+).*\&HTTP_USER_AGENT\=([^\&]+).+JSESSIONID\=[^\"]+\"\s+\"[^\"]+\"\s+\"([^\"]+)/);

Una vez cogidos esos datos me los llevo a fichero plano.

Pues bien, mi pregunta es la siguiente:

Como el macheo está en un if, solo si existen en el fichero los campos puestos en negrita (vamos que si se cumple el macheo) me pinta la línea en el nuevo fichero que yo creo. ¿Y si no se si van a existir pero me los quiero llevar igualmente al fichero (los campos del macheo)?.
Me explico:

- Imaginaros que en alguno de esos ficheros que yo estoy leyendo el campo (en negrita anteriormente puesto) mnn no existe pero para otros casos sí. ¿Cómo hago para que también el macheo me coja esas líneas que no tienen el campo mnn para poder escribirlo en el fichero plano?

Estoy liado, liado...
Muchas gracias por todo y espero haberme explicado.
cblancar
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2008-07-15 01:41 @112

Publicidad

Notapor explorer » 2008-07-15 05:05 @253

Bienvenido a los foros de Perl en Español, cblancar.

Sería interesante ver un ejemplo de las dos líneas, diferentes.

Puedes hacer algo mejor con el macheo, hacerlo en varios if, por ejemplo.

A propósito, machear es fecundar a las hembras por parte de los machos.
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

Notapor cblancar » 2008-07-15 07:03 @335

Gracias explorer.
Lo de machear lo he puesto porque creo que el término que se usa en inglés sería algo como match (o algo parecido) :lol: .

Por cierto estoy probando con dos if y si no funciona me generaré dos .pl diferentes y listo.

Esto del Perl me queda todavía como algo desconocido (por ahora)... :wink:
cblancar
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2008-07-15 01:41 @112

Notapor explorer » 2008-07-15 07:55 @371

cblancar escribiste:Por cierto estoy probando con dos if y si no funciona me generaré dos .pl diferentes y listo.

¡No, por Dios!
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

Notapor kidd » 2008-07-15 08:44 @406

A mi también me gustaría ver un ejemplo de las líneas que tienes dentro de los ficheros, porque como veo tu expresión regular, quizá sería más sencillo usar un split.
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


Volver a Avanzado

¿Quién está conectado?

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