Vous pouvez appeler la commande exactement comme ça:
system("free -m | grep Mem");
De l'documentation:
S'il n'y a qu'un seul argument scalaire, est vérifié l'argument de métacaractères, et s'il y a any, l'argument entier est passé à l'interpréteur de commandes du système pour l'analyse (c'est/bin/sh -c sur les plates-formes Unix, mais varie sur d'autres plates-formes). S'il n'y a pas de métacaractères dans l'argument, il est divisé en mots et transmis directement à execvp, ce qui est plus efficace.
Vous pouvez faire la même chose avec d'autres méthodes pour appeler des commandes externes, comme open
:
open my $fh, "-|", "free -m | grep Mem" or croak "failed to run pipeline";
# and now read from $fh as usual
Mieux vaut utiliser les trois arguments ouvert: 'ouvrir mon $ fh, « - | », « libre -m | grep Mem "ou croak" Impossible d'exécuter le pipeline ";'? –
A fait du bon travail. J'ai utilisé la méthode recommandée par Jonathan, mais la réponse originale m'a orienté dans la bonne direction. – drewrockshard
@Jonathan: Merci, édité que dans. – Cascabel