OVH Cloud OVH Cloud

Résultat d'un appel système

3 réponses
Avatar
s.Müller
Bonjour,

Je chercher à récupérer le résultat (STDOUT) de la fonction système dans une
variable. Pour ce faire j'utilise le code suivant:

sub execute {
my $Command = shift;
my $StdOut;
open OUT,"$Command |";
while ( <OUT> ) { $StdOut .= $_ }
close OUT;
return $StdOut;
}

my $Out = execute qq{Ma commande système};

Est-ce qu'il existe une méthode plus simple ?

Merci à tous

3 réponses

Avatar
Jacques Caron
Salut,

On Wed, 14 Dec 2005 11:53:24 +0100, s.Müller
wrote:

Je chercher à récupérer le résultat (STDOUT) de la fonction système dans
une variable. Pour ce faire j'utilise le code suivant:

sub execute {
my $Command = shift;
my $StdOut;
open OUT,"$Command |";
while ( <OUT> ) { $StdOut .= $_ }
close OUT;
return $StdOut;
}

my $Out = execute qq{Ma commande système};

Est-ce qu'il existe une méthode plus simple ?


my $Out = `ma commande systeme`;

Ce sont des "back-quotes", comme en shell. On peut aussi utiliser qx qui
est la même chose:

my $Out = qx{ma commande systeme};

Voir perldoc perlipc pour quelques remarques sur le sujet. En particulier,
avec la méthode pipe, il est souvent plus rapide de ne pas stocker tout ce
que la commande répond, mais de traiter directement ligne par ligne et de
ne récupérer que ce qu'on veut vraiment comme on le veut vraiment. Mais ça
dépend bien entendu de l'application...

Jacques.
--
Oxado http://www.oxado.com/

Avatar
s.Müller
Evidemment !! Dans quoi je m'embarquais !!??
Merci encore

"Jacques Caron" a écrit dans le message de news:

Salut,

On Wed, 14 Dec 2005 11:53:24 +0100, s.Müller
wrote:

Je chercher à récupérer le résultat (STDOUT) de la fonction système dans
une variable. Pour ce faire j'utilise le code suivant:

sub execute {
my $Command = shift;
my $StdOut;
open OUT,"$Command |";
while ( <OUT> ) { $StdOut .= $_ }
close OUT;
return $StdOut;
}

my $Out = execute qq{Ma commande système};

Est-ce qu'il existe une méthode plus simple ?


my $Out = `ma commande systeme`;

Ce sont des "back-quotes", comme en shell. On peut aussi utiliser qx qui
est la même chose:

my $Out = qx{ma commande systeme};

Voir perldoc perlipc pour quelques remarques sur le sujet. En particulier,
avec la méthode pipe, il est souvent plus rapide de ne pas stocker tout ce
que la commande répond, mais de traiter directement ligne par ligne et de
ne récupérer que ce qu'on veut vraiment comme on le veut vraiment. Mais ça
dépend bien entendu de l'application...

Jacques.
--
Oxado http://www.oxado.com/



Avatar
FDA

Evidemment !! Dans quoi je m'embarquais !!??


Sans doute dans une solution plus portable d'un système à l'autre...
(mixte Linux-Windows, par exemple) ?