J'utilise un eval dont le contenu peut être assez mouvant. Je récupère
les erreurs avec $@, mais j'aimerais bien également récupérer les
warnings dans une variable...
Par ex., avec un warning implicite et un autre explicite :
my $commande = 'my $a = 1; my $c = $a + $b; warn "toto" ; ' ;
print "Erreur : $@\n" if $@ ;
comment puis-je récupérer le texte de mes deux warnings ?
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
jl_morel
Dans l'article , .fr a dit...
J'utilise un eval dont le contenu peut être assez mouvant. Je récupère les erreurs avec $@, mais j'aimerais bien également récupérer les warnings dans une variable...
Par ex., avec un warning implicite et un autre explicite :
my $commande = 'my $a = 1; my $c = $a + $b; warn "toto" ; ' ; print "Erreur : $@n" if $@ ;
comment puis-je récupérer le texte de mes deux warnings ?
On peut utiliser $SIG{__WARN__} Voir perlvar : http://www.bribes.org/perl/docfr/perlvar.html#LC563715B
#!/usr/bin/perl -w use strict;
my @W; { local $SIG{__WARN__} = sub { push @W, $_[0] }; my $commande = 'my $a = 1; my $c = $a + $b; warn "toto" ; ' ; eval $commande; } print @W if @W;
__END__
-- J-L.M.
Dans l'article <4c443a4f.0406250209.6f7909fc@posting.google.com>, antoun@free
.fr a dit...
J'utilise un eval dont le contenu peut être assez mouvant. Je récupère
les erreurs avec $@, mais j'aimerais bien également récupérer les
warnings dans une variable...
Par ex., avec un warning implicite et un autre explicite :
my $commande = 'my $a = 1; my $c = $a + $b; warn "toto" ; ' ;
print "Erreur : $@n" if $@ ;
comment puis-je récupérer le texte de mes deux warnings ?
On peut utiliser $SIG{__WARN__}
Voir perlvar :
http://www.bribes.org/perl/docfr/perlvar.html#LC563715B
#!/usr/bin/perl -w
use strict;
my @W;
{
local $SIG{__WARN__} = sub { push @W, $_[0] };
my $commande = 'my $a = 1; my $c = $a + $b; warn "toto" ; ' ;
eval $commande;
}
print @W if @W;
J'utilise un eval dont le contenu peut être assez mouvant. Je récupère les erreurs avec $@, mais j'aimerais bien également récupérer les warnings dans une variable...
Par ex., avec un warning implicite et un autre explicite :
my $commande = 'my $a = 1; my $c = $a + $b; warn "toto" ; ' ; print "Erreur : $@n" if $@ ;
comment puis-je récupérer le texte de mes deux warnings ?
On peut utiliser $SIG{__WARN__} Voir perlvar : http://www.bribes.org/perl/docfr/perlvar.html#LC563715B
#!/usr/bin/perl -w use strict;
my @W; { local $SIG{__WARN__} = sub { push @W, $_[0] }; my $commande = 'my $a = 1; my $c = $a + $b; warn "toto" ; ' ; eval $commande; } print @W if @W;
__END__
-- J-L.M.
Antoine Dinimant
On peut utiliser $SIG{__WARN__} Voir perlvar : http://www.bribes.org/perl/docfr/perlvar.html#LC563715B local $SIG{__WARN__} = sub { push @W, $_[0] };
super, merci !
en fait j'ai passé une partie de la matinée sur $SIG{__WARN__} = sub {...}, mais je n'ai jamais pensé que la sub il recevait le message en paramètre !
On peut utiliser $SIG{__WARN__}
Voir perlvar :
http://www.bribes.org/perl/docfr/perlvar.html#LC563715B
local $SIG{__WARN__} = sub { push @W, $_[0] };
super, merci !
en fait j'ai passé une partie de la matinée sur $SIG{__WARN__} = sub
{...}, mais je n'ai jamais pensé que la sub il recevait le message en
paramètre !