Hola listeros,

Ando muy entretenida ;-) parseando unos bonitos logs ;-) y tengo un
problema que seguro que es la tonter�a m�s grande del mundo.

Tengo una expresi�n regular y necesito que haga un poco m�s:

# Abro un archivo
while (chomp($id = <FTAG>)){
        # Abro otro archivo
        while (chop($line = <FAUTH>)){
                # Esto me funciona, pero no muy bien
                $line =~ /.*?\|.*?\|.*?\|.*?\|.*?\|.*?\|(.*?.)\|.*?/ ;
                $encontrado  = $+ ;
                
                # Esto es lo que necesito que me encuentre:
                # La l�nea debe empezar por el contenido de la variable $id.
                $line = ~/^\$id\|.*?\|.*?\|.*?\|.*?\|.*?\|(.*?.)\|.*/;
                #####################################################
                #         ~~~~~ C�mo escribo esto????
                #####################################################
                $encontrado = $+ ;
                
                if($encontrado){
                       print $encontrado, "\n";
                }
        }
}

La l�nea t�pica de logs ser�a as�:
4a10a003-f2da63e8c3-0|lxrhgpp04|2003-01-20 07:01:06,372|AUTH 
|[Thread-8]|1|Aplicaci�nCRC|1|351|1|0|0|0||
Abstrayendo:

        
$id|host|fecha|petici�n|algo|algo|$encontrado|m�s_cosas_que_no_me_interesan

S�lo quiero saber el campo $encontrado de la l�nea que empieza por $id.

Estoy empezando tanto con Perl como con las regexp y me cuesta un poco.
Gracias por vuestro tiempo :-)



-- 
.''`.    Girl, you gotta change your crazy ways, you hear me?
: :' :                                  Crazy  by  Aerosmith      
`. `'   Proudly running Debian GNU/Linux (Sid + 2.4.20 + Ext3)
  `-    www.amayita.com  www.malapecora.com  www.chicasduras.com

Responder a