Bonjour à tous,

je viens de réaliser un programme en utilisant le module HTML :: PARSER...

Cependant en l'exécutant, RIEN n'apparaît sur l'écran !! (dans ma console)

Voici mon code;
Pouvez vous me dire ce qu'il ne va pas...MERCI

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/perl -w
use strict;
use diagnostics;
 
use LWP::Simple;     # on a dit qu'on commençait simple
    use HTML::Parser;    # mais ça se complique ;-)
    use HTML::Form;
 
    # récupère la page web correspondant au critère de recherche
    my $content = get( "http://www.apt-get.org/search.php?query=" . shift);
 
    # crée un nouvel analyseur
    my $p = HTML::Parser->new();
 
    # éléments de l'automate
    my $status = '';    # l'état courant de l'automate
    my $this;           # le dépôt en cours d'analyse
    my %data = ();      # la structure de données complète
 
    # définit les gestionnaires d'événements
    $p->handler( text  => \&text,  "text" );
    $p->handler( start => \&start, "tagname,attr" );
    $p->handler( end   => \&end,   "tagname" );
    $p->unbroken_text( 1 );
 
 
 
 sub start {
        my ( $tag, $args ) = @_;
 
        if ( $tag eq 'li' ) {
            # début d'un nouveau dépôt
            if ( $args->{class} eq 'verifiedsite' ) {
                $this   = {};      # nouvelle structure vide
                $status = 'NEW';
            }
            # début d'une liste de paquetages
            elsif ( $args->{class} eq 'packagelist' ) {
                $this->{pkg} = [];
                $status = 'PKG';
            }
        }
 
        # les entrées du sources.list
        elsif ( $tag eq 'span' ) {
            if ( $args->{class} eq 'url' ) {
                $status = 'URL';
                push @{ $this->{deb} }, "";
            }
        }
 
        # ici, on ajoute l'entrée en cours de création
        # dans la structure $data, avec la clé entryXXX
        elsif ( $tag eq 'a' ) {
            if ( $status eq 'NEW' ) {
                 $data{ $args->{name} } = $this if( $args->{name} );
            }
        }
 
        # séparateurs texte du formulaire
        elsif ( $tag eq 'br/' ) {
            if ( $status eq 'URL' ) {
                push @{ $this->{deb} }, "";
            }
            elsif ( $status eq 'PKG' ) {
                push @{ $this->{pkg} }, "";
            }
        }
    }
 
    sub end {
        my $tag = shift;
 
        # fin des urls
        $status = 'NEW' if $tag eq 'span' and $status eq 'URL';
 
        # fin de la liste de paquetages
        $status = 'NEW' if $tag eq 'li'   and $status eq 'PKG';
    }
 
    sub text {
        my $text = shift;
 
        # supprime les sauts lignes
        $text =~ y/\012\015//d;
 
        # texte du sources.list
        $this->{deb}[-1] .= $text if $status eq 'URL';
 
        # liste des paquetages (ignore la première ligne)
        if ( $status eq 'PKG' ) {
            $this->{pkg}[-1] = $text unless $text eq 'Matches:';
        }
    }
 
    for ( keys %data ) {
        print "# $_\n" for grep { $_ } @{ $data{$_}{pkg} };
        print "$_\n"   for grep { $_ } @{ $data{$_}{deb} };
        print "\n";
    }
 
 
  # analyse le document
    $p->parse($content);
    $p->eof;