< < E-NEF > >
Prog. Perl | Art Roman | Voyager | Cartes ()
                  dragon                     e-nef                 Plan du Site
Contact
my.e-nef v0.1
  • Kernel Linux stable: 2.6
  • Perl: 5.8
  • Apache: 2.0
  • mod_perl: 2.0
  • postgres: 8.0


Rubriques


Recherche sur le Site





Bookmarks


Recommandation de Lecture


Questions ?
Dites nous ce que vous
avez pensé de cette page

 Excellent
 Vaut le coup de le lire
 Sans intérêt

 Pas assez technique
 Juste comme il faut
 Trop technique



Cours de Perl
next up previous index
suivant: Comment effacer ou copier monter: Tips and tricks précédent: Tips and tricks   Index

Comment récupérer la sortie d'un programme

Il existe deux manières pour effectuer cela : on peut d'abord utiliser des backquotes comme en shell. Par exemple :

$pwd = `/bin/pwd`;
chop($pwd);

La deuxième manière, qui offre plus de possibilités, est la suivante :


($pid = open(PIPE, "/bin/ps -a |")) or die "Error: $!\n";
(kill 0, $pid) or die "ps invocation failed";
while (defined($line = <PIPE>))
{
  ...;
}
close(PIPE);

Cette manière d'opérer se retrouve également dans l'opération inverse, qui consiste à envoyer des données sur l'entrée standard d'un programme :


($pid = open(PIPE, "| /usr/ucb/ftp")) or die "Error: $!\n";
(kill 0, $pid) or die "ftp invocation failed";
print PIPE "open ftp.enst-bretagne.fr\n";
...;
close(PIPE);
Dans l'exemple présenté ci-dessus, il serait plus intéressant de pouvoir envoyer des données sur l'entrée standard en même temps que de récupérer des données sur la sortie standard. Ceci est possible grâce à un module fourni dans la distribution de perl : IPC::Open2.



Olivier Aubert
1999-06-01



Publicité

© Copyright 1998-2010 Emmanuel PIERRE. Libre reproduction sous Licence LLDDv1.
Pour tout commentaire, webmaster@e-nef.com
Dernière MaJ 31/01/2018

Valid XHTML 1.0!

No Patents/