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.