El día 27 de mayo de 2009 18:06, Pablo Jiménez <pejim...@vtr.net> escribió: > On Wed, May 27, 2009 at 05:02:06PM +0200, Javier wrote: >> Hola, >> >> acabo de actualizar un equipo de etch a lenny y la versión de perl >> ascendió de la 5.8 a la 5.10. >> El problema me viene ahora en cómo lenny trata las expresiones >> regulares, pues parece que no es de la misma forma. Tengo un programa >> chorra que lee de un fichero, lo almacena en una variable y luego a >> esa variable se le hace una expresión regular. Con la nueva versión de >> perl, dicho código falla siempre que el archivo leído ocupe más de 30 >> Kb's. Si ocupa menos la expresión regular va perfectamente. >> Comprobando el fichero sí lo almacena correctamente en la variable, >> por lo que el fallo está a nivel del if, pero no se que es lo que pudo >> cambiar en perl 5.10 >> >> Posteo el código: >> ----------------------------------------------------- >> #!/usr/bin/perl >> >> use XML::Simpler; >> >> my $ref=XMLin("t.xml"); >> if ($ref =~ /<temas>((.|\n)*?)<\/temas>/) >> { >> print "Resultado: $1"; >> } >> >> ----------------------------------------------------- >> >> ¿Alguna idea de por qué el fallo? > > Tal vez se deba a que intentas hacer un matching para un string compuesto > de múltiples líneas, pero no has indicado el flag m. Prueba cambiando tu if > por: > > if ($ref =~ /<temas>(.*?)<\/temas>/m) > > Indícanos si tienes alguna novedad. > > Saludos. > > -- > Pablo Jiménez >
Hola, sí probé con el match m para realizar el grep y aún así me daba el mismo error. Creo que puede ser algo de las versiones de perl 5.8 contra 5.10, pero no se lo qué :( Quizás algo estilo tamaño máximo de un grep en memoria o algo así. En equipos con etch va perfectamente y al actualizarlos a Lenny ya no. Lo único que cambia para la expresión regular es la versión. -- Un saludo, Javier. -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org