J'ai réfléchi à ton problème, mais je ne suis pas certain que cela soit vraiment celui là.
Pour moi, si je le résume bien, ton problème consiste à downloader un site en local pour surfer dessus.
La décomposition du problème se résume ainsi pour moi :
- Une fonction qui va effectuer une requête HTTP pour récupérer l'élément
- Une fonction qui décompose une page html en liste de liens
- Une liste qui permet de gérer les liens (downloader, à downloader)
- Une fonction qui recompose une page html downloader avec les éléments downloader (remplace les liens vers le disque dur)
Je ne suis pas doué dans la gestion des objects PERL 5, mais je pense qu'il faudrait y passer pour gérer proprement le problème (la liste par exemple devrait être un objet, pareil pour la notion d'url, cela permettrait de faire des comparaisons, etc...).
Je ne connais pas les bibliothèques standard, mais je suppose que tout cela existe en partie.
L'utilisation de la fonction récursive est à mon avis une connerie, je verrais plutot une gestion autour de la liste (tant qu'il y a un élément, je vais chercher une donnée, si c'est une page html, je la décompose pour trouver les url qui la constitue, j'enregistre les url dans ma liste (sauf si l'url existe déjà), et j'enregistre la donnée sur disque dur, ... et à la fin, je reparcour la liste pour changer les données sur le disque local pour remettre les liens au gout du jour)
J'ai peur qu'avec le récursif, on se trouve vite bloquer pour faire évoluer. Maintenant, si c'est l'exercice, il faut faire attention à ne pas downloader 20 fois la même chose et surtout éviter les références circulaires (d'ou la liste).
Voilà,
Bonne année à toi aussi