Salut,
J'ai quelques questions sur l'utilisation de ce module IPC::Open3 Sous Windows XP. Je souhaite récupérer les SDOUT et SDERR dans 2 variables différentes afin de faire des tests, etc.
voici mon code
1 2 3 4 5 6
| use IPC::Open3;
my $commande = "dir";
my($entree_IN, $sortie_OUT, $sortie_ERREUR) = ();
my $pid = IPC::Open3::open3($entree_IN, $sortie_OUT, $sortie_ERREUR, $commande );
my $message_erreur = join("",<$sortie_ERREUR>);
print "Erreur : $message_erreur\n" if($message_erreur); |
j'ai le message d'erreur suivant :
Use of uninitialized value in <HANDLE> at test.pl line 10.
readline() on unopened filehandle at test.pl line 10.
c'est cette ligne
my $pid = IPC::Open3::open3($entree_IN, $sortie_OUT, $sortie_ERREUR, $commande );
1- si j'essaye de faire plutot
my $message_erreur = join("",<$sortie_OUT>);
Je récupère le SDOUT, mais aussi les messages d'erreur en cas de commandes erroné comme my $commande = "toto"; et ça ne m'interesse pas.
2 - si j'initialise $sortie_ERREUR à 1, alors ça fonctionne si la commande est erroné. Mais si la commande est ok, le script ne me rend pas la main et j'ai dans le gestionnaire de tache un nouveau processus cmd qui tourne en rond.
Que faire? Comment le module fonctionne? surtout que je souhaiterais aussi l'utiliser dans un script Tk
Partager