por explorer » 2011-05-09 09:41 @445
Yo suelo adoptar varias estrategias para saber, primero, dónde está el error.
Una de ellas, sería ejecutar el programa paso a paso, con el depurador, hasta llegar al momento en que falla. Lo que pasa es que, en este caso, se podría tardar mucho.
Otra, es procesar menos información, hasta que funcione bien.
Es decir: en vez de procesar todo lo que nos podamos bajar de la web, darle al programa, al principio, un HTML del que sabemos que no tiene nada "raro".
Si el resto del programa funciona, repetimos la prueba, pero con una parte de HTML mayor.
Si el resto del programa falla, repetimos la prueba, pero reduciendo el HTML.
El objetivo es localizar la parte de la página HTML que provoca el fallo. Se puede usar la táctica de la búsqueda binaria, para hacer un número de pruebas mínimo.
Naturalmente, si al final, resulta que no es el HTML (porque, quizás, sale el error incluso cuando el HTML está vacío), entonces sí que habrá que procesar ese último HTML bajo el depurador de Perl, yendo paso a paso, y averiguar por qué cae esa línea.
Según el manual del módulo, lo que hay que hacer es sobreescribir la función getHTML(). En su lugar, escribes otra que se llame igual, pero que tenga como misión leer el HTML desde el propio disco duro tuyo. Recortarlo según la prueba que estés haciendo, y devolviendo el resultado (el código HTML) que espera el resto del módulo.
De esta manera, las pruebas serán más rápidas, que si tienes que repetir la conexión a la web deportiva.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES