[Perl] Rediriger puis restaurer STDERR étéit: Récupérer dans une chaîne de caractères ce qui est envoyé sur STDERR loacalement/provisoirement

Dominique Asselineau asseline at telecom-paristech.fr
Ven 30 Juin 17:42:04 CEST 2017


Bonjour,

Dans mon précédent message, j'évoquais le problème de récupérer un
message écrit via STDERR par une fonction.

J'ai trouvé une solution probablement pas très bonne qui reste dans le
cadre des mes connaissances du sujet.

Je ferme STDERR (close STDERR) puis je l'ouvre sur un handler temporaire

  open( my $errorHandle, "+>", undef ) || die $!;
  close( STDERR );
  open( STDERR, ">&", $errorHandle ) || die $!;

J'exécute alors la fonction qui est susceptible d'écrire sut STDERR en
cas d'erreur, donc sur $errorHandle, puis je clos de nouveau STDERR
pour essayer de le rouvrir sur son descripteur d'origine

  close( STDERR );
  open( STDERR, ">&2" );

Ce qui ne donne rien puisque STDERR est visiblement équivalent au
descripteur 2.

La question est donc : comment restaurer le fonctionnement initial de
STDERR ?  Peut-être y a-t-il une fonction bas niveau pour cette
opération ?

merci.

Dominique


Dominique Asselineau wrote on Thu, Jun 29, 2017 at 12:30:41PM +0200
> Bonjour,
> 
> J'utilise une fonction qui envoie les erreurs sur STDERR et comme elles sont pertinentes pour l'utilisateur,
> je souhaiterais les afficher à l'écran dans le contexte d'une appli web.
> 
> Bien sûr je pourrais rediriger STDERR sur STDOUT mais je souhaiterais
> faire quelques traitements avant d'afficher.  Et puis STDERR doit
> garder son fonctionnement habituel pour le reste.
> 
> Pour être plus précis, il s'agit de la fonction
> Text::BibTeX::Entry->parse_s
> 
> quelle serait une manière propre et pérenne de faire ?
> 
> Merci de votre expérience.
> 
> Dominique
> 
> -- 
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl

-- 


Plus d'informations sur la liste de diffusion Perl