Bonjour,
Pour conserver ton écran, il te faut le dupliquer. En C, ça reviendrait à appeler dup. En Perl, la fonction open permet de le faire comme ceci :
open (SAUVE_ECRAN,">&STDOUT");
Dans ce code, le handle SAUVE_ECRAN contiendra une copie de STDOUT.
Plus d'infos là dessus sur la doc Perl.
Notemment cette partie :
Envoyé par
La doc Perl
Vous pouvez aussi, dans la tradition du Bourne shell, spécifier une expression EXPR commençant par '>&' auquel cas le reste de la chaîne sera interprété comme le nom d'un descripteur (ou son numéro si c'est une valeur numérique) à dupliquer puis à ouvrir. Vous pouvez utiliser & après >, >>, <, +>, +>> et +<. Le mode que vous spécifiez devrait correspondre à celui du descripteur original. (La duplication d'un descripteur ne prend pas en compte l'éventuel contenu des tampons d'entrées/sorties). Si vous utilisez l'appel avec 3 arguments alors vous devez fournir soit un nombre, soit le nom du descripteur soit une référence globale ``normale''.
Le fait est que ce code devrait t'intéresser :
1 2 3 4 5 6 7
| open (SAUVE_ECRAN,">&STDOUT"); #on sauve l'écran dans SAUVE_ECRAN
open (STDOUT, ">test.txt"); #on écrase STDOUT
print "Test";
close STDOUT;
open (STDOUT, ">&SAUVE_ECRAN"); #on "régénère" STDOUT
close SAUVE_ECRAN;
print "Test"; |
Pour le faire localement à un if... Euh, bah utilise un process à part pour faire ça
Partager