Il existe deux manières pour effectuer cela : on peut d'abord utiliser des backquotes comme en shell. Par exemple :
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.