sub affiche
{
my ($this) = @_;
print $this->{'LIGNE'};
}
1;
J'utilise cette classe dans le script:
#!/usr/bin/perl -I /home/Perl/Programmes//module
use monParser;
my $p = monParser->new();
$p->parse_file("\/home\/Perl\/Programmes\/arrivee\/tempo\.txt") || die $!;
$p->affiche;
Je veux afficher l'attribut LIGNE avec la méthode affiche.
Mais ça ne marche pas.
Où est le problème ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ronan Le Hy
franck a écrit:
Je veux afficher l'attribut LIGNE avec la méthode affiche. Mais ça ne marche pas.
Je crois avoir deviné que "ça ne marche pas" veut dire que rien n'est affiché. Si j'ai deviné à côté, exprimez-vous plus clairement. http://www.gnurou.org/documents/smart-questions-fr.html
J'ai créer la classe suivante: #!/usr/bin/perl
package monParser; use HTML::Parser; @ISA = qw(HTML::Parser);
Pas de use warnings; pas de use strict. C'est la première chose à ajouter quand quelquechose ne "marche pas".
Pour la suite, j'ai une ou deux suggestions non testées.
my $ligne; my $flag = 0; my %want = (tag => 'font', attrs => { face => "Arial", size => "2" });
sub new { my ($class) = @_; my $this = $class -> SUPER::new(api_version => 3, start_h => [&start_handler, "tagname, attr"], end_h => [sub {$flag=0 if shift eq $want{tag}}, "tagname"], text_h => [sub {$ligne.= shift, "n" if $flag}, "dtext"], );
$this -> {'LIGNE'} = $ligne;
Vous initialisez donc $this->{LIGNE} à vide. Et vous ne le mettez jamais à jour. Je pense que vous voulez: text_h => [sub {$this->{LIGNE}.= shift, "n" if $flag}, "dtext"],
bless ($this,$class); return $this; }
sub affiche { my ($this) = @_; print $this->{'LIGNE'}; } 1;
J'utilise cette classe dans le script:
#!/usr/bin/perl -I /home/Perl/Programmes//module use monParser; my $p = monParser->new(); $p->parse_file("/home/Perl/Programmes/arrivee/tempo.txt") || die $!;
Ces backslashes me paraissent inutiles.
$p->affiche;
HTH
-- Ronan
franck a écrit:
Je veux afficher l'attribut LIGNE avec la méthode affiche.
Mais ça ne marche pas.
Je crois avoir deviné que "ça ne marche pas" veut dire que rien n'est
affiché. Si j'ai deviné à côté, exprimez-vous plus clairement.
http://www.gnurou.org/documents/smart-questions-fr.html
J'ai créer la classe suivante:
#!/usr/bin/perl
package monParser;
use HTML::Parser;
@ISA = qw(HTML::Parser);
Pas de use warnings; pas de use strict. C'est la première chose à
ajouter quand quelquechose ne "marche pas".
Pour la suite, j'ai une ou deux suggestions non testées.
my $ligne;
my $flag = 0;
my %want = (tag => 'font',
attrs => { face => "Arial", size => "2" });
sub new
{
my ($class) = @_;
my $this = $class -> SUPER::new(api_version => 3,
start_h => [&start_handler, "tagname, attr"],
end_h => [sub {$flag=0 if shift eq $want{tag}},
"tagname"],
text_h => [sub {$ligne.= shift, "n" if $flag}, "dtext"],
);
$this -> {'LIGNE'} = $ligne;
Vous initialisez donc $this->{LIGNE} à vide. Et vous ne le mettez jamais
à jour.
Je pense que vous voulez:
text_h => [sub {$this->{LIGNE}.= shift, "n" if $flag}, "dtext"],
bless ($this,$class);
return $this;
}
sub affiche
{
my ($this) = @_;
print $this->{'LIGNE'};
}
1;
J'utilise cette classe dans le script:
#!/usr/bin/perl -I /home/Perl/Programmes//module
use monParser;
my $p = monParser->new();
$p->parse_file("/home/Perl/Programmes/arrivee/tempo.txt") || die $!;
Je veux afficher l'attribut LIGNE avec la méthode affiche. Mais ça ne marche pas.
Je crois avoir deviné que "ça ne marche pas" veut dire que rien n'est affiché. Si j'ai deviné à côté, exprimez-vous plus clairement. http://www.gnurou.org/documents/smart-questions-fr.html
J'ai créer la classe suivante: #!/usr/bin/perl
package monParser; use HTML::Parser; @ISA = qw(HTML::Parser);
Pas de use warnings; pas de use strict. C'est la première chose à ajouter quand quelquechose ne "marche pas".
Pour la suite, j'ai une ou deux suggestions non testées.
my $ligne; my $flag = 0; my %want = (tag => 'font', attrs => { face => "Arial", size => "2" });
sub new { my ($class) = @_; my $this = $class -> SUPER::new(api_version => 3, start_h => [&start_handler, "tagname, attr"], end_h => [sub {$flag=0 if shift eq $want{tag}}, "tagname"], text_h => [sub {$ligne.= shift, "n" if $flag}, "dtext"], );
$this -> {'LIGNE'} = $ligne;
Vous initialisez donc $this->{LIGNE} à vide. Et vous ne le mettez jamais à jour. Je pense que vous voulez: text_h => [sub {$this->{LIGNE}.= shift, "n" if $flag}, "dtext"],
bless ($this,$class); return $this; }
sub affiche { my ($this) = @_; print $this->{'LIGNE'}; } 1;
J'utilise cette classe dans le script:
#!/usr/bin/perl -I /home/Perl/Programmes//module use monParser; my $p = monParser->new(); $p->parse_file("/home/Perl/Programmes/arrivee/tempo.txt") || die $!;